Java 自定义BigInteger JSON序列化程序
我正在尝试实现一个自定义JSON序列化程序类,以便在JSON响应中将objectJava 自定义BigInteger JSON序列化程序,java,spring,jackson,objectmapper,Java,Spring,Jackson,Objectmapper,我正在尝试实现一个自定义JSON序列化程序类,以便在JSON响应中将objectBigInteger值显示为字符串 我已经实现了一个自定义序列化程序类 public class CustomCounterSerializer extends StdSerializer<BigInteger> { private static final long serialVersionUID = 5440920327083673598L; public CustomCount
BigInteger
值显示为字符串
我已经实现了一个自定义序列化程序类
public class CustomCounterSerializer extends StdSerializer<BigInteger> {
private static final long serialVersionUID = 5440920327083673598L;
public CustomCounterSerializer() {
this(BigInteger.class);
}
public CustomCounterSerializer(Class<BigInteger> vc) {
super(vc);
}
@Override
public void serialize(BigInteger value, JsonGenerator jsonGenerator, SerializerProvider provider) throws IOException {
BigInteger valueJson = value==null ? BigInteger.valueOf(0) : value;
jsonGenerator.writeString(valueJson.toString());
}
}
它失败,因为它包含null
而不是null值:“0”
但是对象的
null
值总是转到no-args构造函数,甚至像this(biginger.class)
不使用我的方法并打印null您需要告诉Jackson它应该使用您的序列化程序
即使对于空值也是如此。您可以使用@JsonSerializer
也可以使用参数
在MyObject类中,它将如下所示:
@JsonSerialize(using = CustomCounterSerializer.class,
nullsUsing = CustomCounterSerializer.class)
private BigInteger nullValue;
旁注:您不应该假设字段是按特定顺序序列化的。我正在使用@JsonSerialize并将该类指定为该属性的序列化程序。我不接受命令。我需要根据值的行为。您的断言在nullValue
之前需要nonNullValue
。
@JsonSerialize(using = CustomCounterSerializer.class,
nullsUsing = CustomCounterSerializer.class)
private BigInteger nullValue;