1. 前言
网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于成都定制网页设计,高端网页制作,对成都加固等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业seo优化优化,H5建站,响应式网站。
日常开发中少不了 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 属性的方法:
正好我们可以借助于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
- */
- @Data
- public 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
JsonNode可以细粒度的访问 JSON 信息,提供了非常有用的 JSON 对象操作 API,但是很多人在有相关需求的时候并不能够想到它,所以你不需要具体的记住这些 API,只需要记住它可以操作 JSON 即可。
6. 总结
本文对 Jackson 动态的增删改查 JSON 进行了介绍,牵引出一个很重要的操作工具JsonNode。充分利用手中已有的资源来解决问题,无需自己造轮子,也不必引入新的依赖。
本文转载自微信公众号「码农小胖哥」,可以通过以下二维码关注。转载本文请联系码农小胖哥公众号。
文章名称:Java对象转JSON时如何动态的增删改查属性
当前URL:http://www.shufengxianlan.com/qtweb/news33/545083.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联