Java对象转JSON时如何动态的增删改查属性
1. 前⾔
⽇常开发中少不了JSON处理,少不了需要在JSON中添加额外字段或者删除特定字段的需求。今天我们就使⽤Jackson类库来实现这个功能。
2. JSON字符串增加额外字段
假如我们有这样结构的JSON:
{
"username":"felord",
"age":18
}
期望增加⼀个性别字段gender:
{
"username": "felord",
"age": 18,
"gender": "male"
}
⾸先使⽤ObjectMapper加载JSON字符串,为ObjectNode:
ObjectNode jsonNodes = adValue(json, ObjectNode.class);
ObjectNode提供了很多操作JSON属性的⽅法:
get 根据索引或者字段名获取对应的JsonNode。
put系列⽅法提供了将基本类型、null值、对象、数组、原始值添加到JSON的能⼒。
正好我们可以借助于put⽅法来完成额外新增字段,完整的代码⽚段:
String json = "{\n" +
" \"username\":\"felord\",\n" +
" \"age\":18\n" +
"}";
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode jsonNodes = adValue(json, ObjectNode.class);
jsonNodes.put("gender", "male");
String newJson = objectMapper.writeValueAsString(jsonNodes);
// newJson = {"username":"felord","age":18,"gender":"male"}
3. 对象转JSON时新增字段
有时候我们定义的对象没有包含特定的字段,但是转成JSON时同样需要有额外的字段。跟类似,,只不过提供的不再是JSON字符串⽽是Java对象:json转换对象
/**
* @author felord
* @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");
user.setAge(18);
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode jsonNodes = objectMapper.valueToTree(user);
jsonNodes.put("gender", "male");
String newJson = objectMapper.writeValueAsString(jsonNodes);
// newJson = {"username":"felord","age":18,"gender":"male"}
4. 移除属性
⽆论是JSON字符串或者Java对象转JSON时,移除属性跟上⾯的思路⼀样,只需要调⽤remove⽅法即可,这⾥不再演⽰。
5. 扩展
上⾯的所有操作都是借助于了Jackson中的JsonNode派⽣的JSON节点类完成的,关系如下:
JsonNode可以细粒度的访问JSON信息,提供了⾮常有⽤的JSON对象操作API,但是很多⼈在有相关需求的时候并不能够想到它,所以你不需要具体的记住这些API,只需要记住它可以操作JSON即可。
6. 总结
本⽂对Jackson动态的增删改查JSON进⾏了介绍,牵引出⼀个很重要的操作⼯具JsonNode。充分利⽤⼿中已有的资源来解决问题,⽆需⾃⼰造轮⼦,也不必引⼊新的依赖。好了今天的分享就到这⾥,多多关注:码农⼩胖哥及时获取更多有效的编程⼲货。
关注:Felordcn 获取更多资讯
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论