生成JSON时强制JSON-B将数字写成字符串

Force JSON-B to write Numbers as Strings when generating JSON

我在 Java 代码中处理大量数字,由于 JavaScript 的限制(即整数的 32 位支持),我需要将这些数字写为我的应用程序返回的 JSON 中的字符串。

是否有允许我执行此操作的全局配置或注释?如果可能,我想避免编写自定义 serializers/adapters。

我正在使用具有新 JSON-B/Yasson 支持的 RestEasy。

我能想到的唯一方法是使用这样的适配器:

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没有注释的将被默认处理。