强制JSON-B在生成JSON时将Numbers写为字符串

问题描述 投票:0回答:1

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

是否有全局配置或注释可以让我这样做?如果可能的话,我想避免编写自定义序列化器/适配器。

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

jax-rs resteasy jsonb-api yasson
1个回答
1
投票

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

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将被默认处理。

© www.soinside.com 2019 - 2024. All rights reserved.