有没有一种使用Jackson JSON Processor进行自定义字段级序列化的方法?例如,我想上课
public class Person {
public String name;
public int age;
public int favoriteNumber;
}
序列化为以下JSON:
{ "name": "Joe", "age": 25, "favoriteNumber": "123" }
请注意,age = 25被编码为 数字, 而favoriteNumber = 123被编码为 string
。开箱即用的杰克逊将集结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应该为您处理自动装箱从int
到Integer
。
有没有一种方法可以使用Jackson JSON处理器来执行自定义字段级别的序列化?例如,我想让 注意,age=25被编码为数字,而favoritenumber=123被编码为字符串。Jackson将编组为一个数字。在这种情况下,我希望将favoriteNumber编码为字符串。
属性有时可以为。如何配置将此字段序列化为,如果它是? 我认为我不能使用mixins,因为mixins不能访问原始对象,因此它们不能检查属性的值是否为。
我使用Gson与改造。我的服务器接受空值,所以在我给的gson构建器 这样就不会忽略空值。但是在一些s中,我有一个特殊的情况,其中一些字段应该存在,即使是它的null,而其他一些字段如果是null也不应该序列化。 例如,如果我有一个请求类,比如 如果我有一个请求,其中和,应该将其序列化如下: 这意味着,如果type为null,它应该忽略该字段,但是如果id为null,它应该在请求中显示为null。
我正在从Xml字符串创建JavaDTO,但是字段的顺序不一样。例如Xml字符串: 转换后的Dto类似于: 有没有这样的注释,可以让我们输入如下字段的数量:
问题内容: 我知道如何在Jackson中使用自定义序列化程序(通过扩展),但是我希望默认序列化程序可用于除1个字段之外的所有字段,我想使用自定义序列化程序覆盖该字段。 注释不是一种选择,因为我正在序列化一个生成的类(来自Thrift)。 编写自定义杰克逊序列化程序时,如何仅指定要覆盖的某些字段? 更新: 这是我要序列化的类: 上面的类有很多特质,其中大多数使用本机类型。我只想覆盖自定义序列化程序中
有没有一种方法可以指定不同的序列化/反序列化JSON字段名,而不必显式地写出getter和setter方法,或许可以使用lombok getter和setter? 与此示例类似,下面的代码允许将传入的JSON反序列化为不同的POJO字段名。它还会使POJO字段名序列化为: 但这当然是不成立的。