JsonNode、ObjectNode和ArrayNode

本文介绍了Jackson库中的JsonNode、ObjectNode和ArrayNode在处理JSON字符串时的灵活性,尤其是如何在不创建PoJO的情况下进行数据操作。作者展示了如何使用这些类进行JSON对象和数组的读写。
摘要由CSDN通过智能技术生成

我个人不喜欢fastjson,但是项目中很多地方用到json字符串转换对象但又不想创建pojo
所以使用jackson的JsonNode、ObjectNode和ArrayNode就非常好用,万能对象,这三
个对象是非常全面的,感兴趣的可以看下源码

JsonNode 只读,通常由ObjectMapper解析json字符串得到
ObjectNode 可修改, 继承JsonNode
ArrayNode 可修改, 继承JsonNode

ObjectNode类似fastjson的JSONObject
ArrayNode类似fastjson的JSONArray

ObjectNode objectNode0 = JsonNodeFactory.instance.objectNode();  
objectNode0.put("sub", "child");  
  
ObjectNode objectNode = JsonNodeFactory.instance.objectNode();  
objectNode.put("aa","aa");  
objectNode.put("a1",111);  
objectNode.put("a2","123");  
objectNode.put("a4",true);  
objectNode.put("a5",objectNode0);  
System.out.println(objectNode);  
  
ArrayNode arrayNode = JsonNodeFactory.instance.arrayNode();  
arrayNode.add(123);  
arrayNode.add("abd");  
arrayNode.add(true);  
arrayNode.add(objectNode0);  
System.out.println(arrayNode);

// JsonNode 
String json = "{\n" +  
    "    \"id\": \"AaEXKZGjdBAQVxtqofPymQmJhuuuupGD\",\n" +  
    "    \"roleName\": \"临时角色uuuu\",\n" +  
    "    \"roleCode\": \"test20uuuu33120\",\n" +  
    "    \"description\": \"这是新建的临时角色123\",\n" +  
    "    \"createBy\": \"admin\",\n" +  
    "    \"createTime\": \"2023-09-10 19:57:26\",\n" +  
    "    \"updateBy\": null,\n" +  
    "    \"updateTime\": \"2023-09-10 19:57:26\"\n" +  
    "}";  
try {  
    JsonNode jsonNode = new ObjectMapper().readTree(json);  
    System.out.println(jsonNode);  
} catch (IOException e) {  
}

上面内容输出

{"aa":"aa","a1":111,"a2":"123","a4":true,"a5":{"sub":"child"}}
[123,"abd",true,{"sub":"child"}]
{"id":"AaEXKZGjdBAQVxtqofPymQmJhuuuupGD","roleName":"临时角色uuuu","roleCode":"test20uuuu33120","description":"这是新建的临时角色123","createBy":"admin","createTime":"2023-09-10 19:57:26","updateBy":null,"updateTime":"2023-09-10 19:57:26"}

jackson版本

<dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.4</version>
</dependency>
  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员阿宁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值