前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Java对象转JSON时如何动态的增删改查属性

Java对象转JSON时如何动态的增删改查属性

作者头像
码农小胖哥
发布2020-10-30 11:16:17
发布2020-10-30 11:16:17
3K00
代码可运行
举报
运行总次数:0
代码可运行

1. 前言

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

2. JSON 字符串增加额外字段

假如我们有这样结构的 JSON:

代码语言:javascript
代码运行次数:0
复制
{
    "username":"felord.cn",
    "age":18
}

期望增加一个性别字段gender:

代码语言:javascript
代码运行次数:0
复制
{
    "username": "felord.cn",
    "age": 18,
    "gender": "male"
}

首先使用ObjectMapper加载 JSON 字符串,为ObjectNode:

代码语言:javascript
代码运行次数:0
复制
ObjectNode jsonNodes = objectMapper.readValue(json, ObjectNode.class);

ObjectNode提供了很多操作 JSON 属性的方法:

  • get 根据索引或者字段名获取对应的JsonNode
  • put 系列方法 提供了将基本类型、null值、对象、数组、原始值添加到 JSON 的能力。

正好我们可以借助于put方法来完成额外新增字段,完整的代码片段:

代码语言:javascript
代码运行次数:0
复制
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 对象:

代码语言:javascript
代码运行次数:0
复制
/**
 * @author felord.cn
 * @since 11:02
 */
@Data
public class User {
    private String username;
    private Integer age;
}

其实思路很明确,只要我们能够将对象转换为ObjectNode就可以如法炮制。ObjectMapper提供了valueToTree方法可以实现这一点,所以对象转 JSON 时新增字段完整的 DEMO 为:

代码语言:javascript
代码运行次数:0
复制
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。充分利用手中已有的资源来解决问题,无需自己造轮子,也不必引入新的依赖。好了今天的分享就到这里,多多关注:码农小胖哥 及时获取更多编程干货。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农小胖哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. JSON 字符串增加额外字段
  • 3. 对象转 JSON 时新增字段
  • 4. 移除属性
  • 5. 扩展
  • 6. 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档