有没有办法使用Jackson JSON处理器进行自定义字段级序列化?例如,我想上这门课

public class Person {
    public String name;
    public int age;
    public int favoriteNumber;
}

serialized to the follow JSON:

{ "name": "Joe", "age": 25, "favoriteNumber": "123" }

请注意,age=25编码为number,而favoriteNumber=123编码为string.开箱即用的杰克逊将int封编组为一个数字.在本例中,我希望将favoriteNumber编码为字符串.

推荐答案

You can implement a custom serializer as follows:

public class Person {
    public String name;
    public int age;
    @JsonSerialize(using = IntToStringSerializer.class, as=String.class)
    public int favoriteNumber:
}


public class IntToStringSerializer extends JsonSerializer<Integer> {

    @Override
    public void serialize(Integer tmpInt, 
                          JsonGenerator jsonGenerator, 
                          SerializerProvider serializerProvider) 
                          throws IOException, JsonProcessingException {
        jsonGenerator.writeObject(tmpInt.toString());
    }
}

Java应该为您处理从intInteger的自动装箱.

Json相关问答推荐

PowerShell - JSON/PsCustomObject - 为什么我的数组被扁平化为一个对象?

hook到 Decodable.init() 以获得未指定的键?

如何删除 django jsonfield 中的特定项目

N1QL 聚合查询 Couchbase

Golang / Go - 如果结构没有字段,如何将其编组为空?

将嵌套的 JSON 对象规范化为 Pandas 数据框

为 Sinatra 设置默认 content_type

类型“{}”不可分配给类型“IntrinsicAttributes & IntrinsicClassAttributes”

在 JSON 字符串中react i18n 换行符

将 TypeScript 与 tsconfig.json 文件一起使用时是否可以包含 json 文件?

将 YAML 文件转换为 Python JSON 对象

如何在python中读取json对象

在 VS Code 中,禁用错误“JSON 中不允许评论”

你如何在 Arrays of Arrays 上 OPENJSON

来自 JSON 字符串的 Typescript `enum`

如何从 Swift Codable 中排除属性?

使用 JSONEncoder 编码/解码符合协议的类型数组

使用 jq 如何用其他名称替换键的名称

如何在不消除对象歧义的情况下使用 circe 解码 ADT

代码中的 ASP.NET Core appsettings.json 更新