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