Заставить 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 аннотированные аннотации не будут обрабатываться по умолчанию.

Другие вопросы по тегам