如何解决@JsonFormat甚至将NUMBER形状的字符串写入String属性
即使具有NUMBER
形状,为什么它的打印字符串也带有双引号?
@JsonFormat(shape = Shape.NUMBER)
private String count;
...
ObjectMapper mapper = new ObjectMapper();
Test test =new Test();
test.setCount("20");
String jsonString = mapper.writeValueAsString(test);
System.out.println(jsonString);
JSON
结果:
{
"count" : "20"
}
解决方法
@JsonFormat
注释是唯一的建议,结果取决于给定的自定义序列化程序,该序列化程序将用于序列化给定的值。在您的情况下,com.fasterxml.jackson.databind.ser.std.StringSerializer
将用于序列化count
的值。该序列化器不执行任何特殊行为。只是简单的写为JSON String
的值。另一方面,com.fasterxml.jackson.databind.ser.std.NumberSerializer
尊重@JsonFormat
注释,如果您设置STRING
的形状,它将产生JSON String
而不是JSON Number
。
因此,您始终必须检查类型序列化程序的实现才能回答此类问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。