拜托!学妹,Java对象转JSON时如何动态的增删改查属性这道题很简单!

作者 : 开心源码 本文共1797个字,预计阅读时间需要5分钟 发布时间: 2022-05-13 共149人阅读

一. 前言

日常开发中少不了JSON解决,少不了需要在JSON中增加额外字段或者者删除特定字段的需求。今天我们就使用Jackson类库来实现这个功能。

二. 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"}

三. 对象转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"}

四. 移除属性

无论是JSON字符串或者者Java对象转JSON时,移除属性跟上面的思路一样,只要要调用remove方法就可,这里不再演示。

五. 扩展

上面的所有操作都是借助于了Jackson中的JsonNode派生的JSON节点类完成的,关系如下:

JsonNode可以细粒度的访问JSON信息,提供了非常有用的JSON对象操作API,但是很多人在有相关需求的时候并不能够想到它,所以你不需要具体的记住这些API,只要要记住它可以操作JSON就可。

六. 总结

本文对Jackson动态的增删改查JSON进行了详情,牵引出一个很重要的操作工具JsonNode。充分利用手中已有的资源来处理问题,无需自己造轮子,也不必引入新的依赖。好了今天的分享就到这里。

码字不易,你的支持就是我的动力,觉得有帮助到你的朋友,欢迎多多点赞转发评论。

作者:码农小胖哥
链接:https://juejin.im/post/6890697761780563982
来源:掘金
著作权归作者所有。商业转载请联络作者取得受权,非商业转载请注明出处。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 拜托!学妹,Java对象转JSON时如何动态的增删改查属性这道题很简单!

发表回复