Заставить JSON-B записывать числа в виде строк при генерации JSON - PullRequest
0 голосов
/ 09 января 2019

Я имею дело с большими числами в моем Java-коде, и из-за ограничений JavaScript (а именно, 32-битной поддержки целых чисел) мне нужно записать эти числа в виде строк в JSON, возвращаемых моим приложением.

Существует ли глобальная конфигурация или аннотация, которая позволит мне это сделать? Я хотел бы избежать написания пользовательских сериализаторов / адаптеров, если это возможно.

Я использую RestEasy с новой поддержкой JSON-B / Yasson.

1 Ответ

0 голосов
/ 04 апреля 2019

Единственное, о чем я могу думать, это использовать такой адаптер:

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

...