1. 前言
日常开发中少不了JSON处理,少不了需要在JSON中添加额外字段或者删除特定字段的需求。今天我们就使用Jackson类库来实现这个功能。
2. JSON字符串增加额外字段
假如我们有这样结构的JSON:
{ "username":"felord.cn", "age":18}
期望增加一个性别字段gender
:
{ "username": "felord.cn", "age": 18, "gender": "male"}
首先使用ObjectMapper
加载JSON字符串,为ObjectNode
:
ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class);
ObjectNode
提供了很多操作JSON属性的方法:
- get 根据索引或者字段名获取对应的
JsonNode
。 - put系列方法 提供了将基本类型、
null
值、对象、数组、原始值添加到JSON的能力。
正好我们可以借助于put
方法来完成额外新增字段,完整的代码片段:
String json = "{\n" + " \"username\":\"felord.cn\",\n" + " \"age\":18\n" + "}";ObjectMapper objectMapper = new ObjectMapper();ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class);jsonNodes.put("gender", "male");String newJson = objectMapper.writeValueAsString(jsonNodes);// newJson = {"username":"felord.cn","age":18,"gender":"male"}
3. 对象转JSON时新增字段
有时候我们定义的对象没有包含特定的字段,但是转成JSON时同样需要有额外的字段。跟章节2类似,,只不过提供的不再是JSON字符串而是Java对象:
/** * @author felord.cn * @since 11:02 */@Datapublic class User { private String username; private Integer age;}
其实思路很明确,只要我们能够将对象转换为ObjectNode
就可以如法炮制。ObjectMapper
提供了valueToTree
方法可以实现这一点,所以对象转JSON时新增字段完整的DEMO为:
User user = new User();user.setUsername("felord.cn");user.setAge(18);ObjectMapper objectMapper = new ObjectMapper();ObjectNode jsonNodes = objectMapper.valueToTree(user);jsonNodes.put("gender", "male");String newJson = objectMapper.writeValueAsString(jsonNodes);// newJson = {"username":"felord.cn","age":18,"gender":"male"}
4. 移除属性
无论是JSON字符串或者Java对象转JSON时,移除属性跟上面的思路一样,只需要调用remove
方法即可,这里不再演示。
5. 扩展
上面的所有操作都是借助于了Jackson中的JsonNode
派生的JSON节点类完成的,关系如下:
JsonNode
可以细粒度的访问JSON信息,提供了非常有用的JSON对象操作API,但是很多人在有相关需求的时候并不能够想到它,所以你不需要具体的记住这些API,只需要记住它可以操作JSON即可。
6. 总结
本文对Jackson动态的增删改查JSON进行了介绍,牵引出一个很重要的操作工具JsonNode
。充分利用手中已有的资源来解决问题,无需自己造轮子,也不必引入新的依赖。好了今天的分享就到这里,多多关注:码农小胖哥 及时获取更多有效的编程干货。
关注公众号:Felordcn 获取更多资讯
个人博客:https://felord.cn
原文转载:http://www.shaoqun.com/a/486996.html
xinong:https://www.ikjzd.com/w/1368
贝贝官网:https://www.ikjzd.com/w/1321
百思买:https://www.ikjzd.com/w/394
1.前言日常开发中少不了JSON处理,少不了需要在JSON中添加额外字段或者删除特定字段的需求。今天我们就使用Jackson类库来实现这个功能。2.JSON字符串增加额外字段假如我们有这样结构的JSON:{"username":"felord.cn","age":18}期望增加一个性别字段gender:{"username&qu
tineye:https://www.ikjzd.com/w/448
tracker:https://www.ikjzd.com/w/2720
丽江古城到束河古镇怎么走?有多远?:http://tour.shaoqun.com/a/5913.html
三亚大东海梦龙海洋馆春节门票多少钱?2020春节大东海海洋:http://tour.shaoqun.com/a/31071.html
黑龙江五一去哪玩?五一黑龙江哪里好玩?:http://tour.shaoqun.com/a/46812.html
没有评论:
发表评论