Заставить JSON-B записывать числа в виде строк при генерации JSON
Я имею дело с большими числами в моем Java-коде, и из-за ограничений JavaScript (а именно 32-битной поддержки Integer) мне нужно записать эти числа в виде строк в JSON, возвращаемых моим приложением.
Существует ли глобальная конфигурация или аннотация, которая позволит мне это сделать? Я хотел бы избежать написания пользовательских сериализаторов / адаптеров, если это возможно.
Я использую RestEasy с новой поддержкой JSON-B/Yasson.
0 ответов
Единственный способ, которым я могу придумать, - это использовать такой адаптер:
import javax.json.bind.adapter.JsonbAdapter;
public class AdapterIntegerToString implements JsonbAdapter<Integer, String> {
@Override
public String adaptToJson(Integer obj) throws Exception {
return String.valueOf(obj);
}
@Override
public Integer adaptFromJson(String obj) throws Exception {
return Integer.parseInt(obj);
}
}
А затем аннотировал вашу собственность:
@JsonbTypeAdapter(AdapterIntegerToString.class)
private Integer age;
Любой другой Integer
аннотированные аннотации не будут обрабатываться по умолчанию.