java - 某些字段的 jackson JSON 自定义序列化

标签 java json serialization jackson

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

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

序列化为以下 JSON:

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

请注意,age=25 被编码为 数字,而 favoriteNumber=123 被编码为 字符串。开箱即用的 jackson 将 int 编码为一个数字。在这种情况下,我希望将 favoriteNumber 编码为字符串。

最佳答案

您可以按如下方式实现自定义序列化程序:

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 的自动装箱。

关于java - 某些字段的 jackson JSON 自定义序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12046786/

相关文章:

java - 将对象 ArrayList 的某些值传递到另一个 java 类

android - 如何压缩 JSONObject 在 Android 中通过 Http 发送?

c# - 从 BindingList 和 ISerializable 接口(interface)序列化派生类

c# - Azure 服务总线序列化类型

c - 如何在C中序列化数据

java - 在 Java 中处理键盘键 ALT+F4 组合

java - JSR303 : Trying to customize a constraint violation to be associated with a sub-path in a class-level relationship constraint validator

java - Netbeans GUI Builder - 如何添加自定义表格单元格渲染器?

python - 将 Python 字节串序列化为 JSON,保留序号字符值

objective-c - 如何在 Swift 或 Objective-C 中获取 JSON 数据结构的人类可读映射?