我是靠谱客的博主 动听鲜花,这篇文章主要介绍Jackson将对象转成json字符串,修改字段名(isEncryption),现在分享给大家,希望可以做个参考。

1.背景

在将一个对象转成ArrayNode时,出现了下面的情况

ParamVo(name=Date, value=20202020, desc=ddddddddddd, isEncryption=true)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class ParamVo implements Serializable { private static final long serialVersionUID = 1L; /** *参数名称 */ private String name; /** * 参数值 */ private String value; /** * 参数描述 */ private String desc; /** * 是否加密 */ private boolean isEncryption; }

输出的结果为

复制代码
1
2
3
4
5
6
7
8
public static void main(String[] args) throws Exception { ParamVo paramVo = new ParamVo("Date", "$dateDay", "dddddddd", true); ObjectMapper OBJECT_MAPPER = new ObjectMapper(); System.out.println(OBJECT_MAPPER.writeValueAsString(paramVo)); } # {"name":"Date","value":"$dateDay","encryption":true,"desc":"dddddddd"}

很明显 isEncryption 变成了 encryption,这是什么原因呢?(自行查找原因)

但是如何解决这个问题呢?

首先JackSon 根据getter 来定位Json 对象的属性,而不是字段,现在我们给字段增加注解

@JsonProperty

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class ParamVo implements Serializable { private static final long serialVersionUID = 1L; /** *参数名称 */ private String name; /** * 参数值 */ private String value; /** * 参数描述 */ @JsonProperty("kkk") private String desc; /** * 是否加密 */ @JsonProperty("isEncryption") private boolean isEncryption; }

现在输出结果(isEncryption不再变成encryption,desc变成了kkk)

复制代码
1
2
3
4
5
6
7
public static void main(String[] args) throws Exception { ParamVo paramVo = new ParamVo("Date", "$dateDay", "dddddddd", true); ObjectMapper OBJECT_MAPPER = new ObjectMapper(); System.out.println(OBJECT_MAPPER.writeValueAsString(paramVo)); } #{"name":"Date","value":"$dateDay","kkk":"dddddddd","isEncryption":true}

最后

以上就是动听鲜花最近收集整理的关于Jackson将对象转成json字符串,修改字段名(isEncryption)的全部内容,更多相关Jackson将对象转成json字符串内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部