共计 1731 个字符,预计需要花费 5 分钟才能阅读完成。
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
*/
@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
能够细粒度的拜访 JSON 信息,提供了十分有用的 JSON 对象操作 API,然而很多人在有相干需要的时候并不可能想到它,所以你不须要具体的记住这些 API,只须要记住它能够操作 JSON 即可。
6. 总结
本文对 Jackson 动静的增删改查 JSON 进行了介绍,牵引出一个很重要的操作工具 JsonNode
。充分利用手中已有的资源来解决问题,无需本人造轮子,也不用引入新的依赖。好了明天的分享就到这里,多多关注: 码农小胖哥 及时获取更多无效的编程干货。
关注公众号:Felordcn 获取更多资讯
集体博客:https://felord.cn