博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JsonNode、JsonObject常用方法
阅读量:6206 次
发布时间:2019-06-21

本文共 3589 字,大约阅读时间需要 11 分钟。

JsonNode、JsonObject常用方法

最近项目中要用json,闲暇时间,对json进行下总结。

1.JsonNode

项目中用到的jar包
 
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import springfox.documentation.schema.Entry;
import java.io.IOException;
import java.util.*;
 
Json字符串
 
String json = "{\"username\":\"tom\",\"company\":{\"companyName\":\"中华\",\"address\":\"北京\"},\"cars\":[\"奔驰\",\"宝马\"]"};
String arrayJson = "[{\"number\":64,\"result\":\"SUCCESS\"},{\"number\":65,\"result\":\"FAILURE\"},{\"number\":66,\"result\":\"ABORTED\"},{\"number\":67,\"result\":\"SUCCESS\"}]";
Json字符串转换成JsonNode对象
 
 
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(json);
jsonNode的fieldNames方法是获取jsonNode的所有的key值
 
 
Iterator<String> keys = jsonNode.fieldNames();
while(keys.hasNext()){
String key = keys.next();
System.out.println("key键是:"+key);
}
根据key值获取对应的值
 
JsonNode path = jsonNode.path("username");
JsonNode resultValue = jsonNode.findValue("username");
JsonNode resultPath = jsonNode.findPath("username");
如果value为String,可以这样读取jsonNode的asText()方法获取到字符串,其他类型可以jsonNode.findValue("number").asInt();这几种方法都可以根据key获取到相应的值,匹配到一个就停止搜索。resultValue和resultPath的区别在于,如果没有匹配到任何key值为性别,resultValue为null,resultPath为空JsonNode,第一种的区别不是很清楚。
 
如果是一个JsonNode数组,使用jsonNode.elements();读取数组中每个node, 如果不是JsonNode数组,使用jsonNode.elements();返回jsonNode的values
 
 
Iterator<JsonNode> elements = jsonNode.elements();
while(elements.hasNext()){
JsonNode node = elements.next();
System.out.println(node.toString());
}
 
取出所有key值为number的JsonNode的List
 
 
List<JsonNode> findKeys = jsonNode.findParents("number");
for (JsonNode result:findKeys){
System.err.println(result.toString());
}
取出所有key值为number对应的value(如果value中包含子jsonNode并且子jsonNode的key值也为number,是无法捕获到并加入list的)
 
 
List<JsonNode> findValues = jsonNode.findValues("number");
for(JsonNode value: findValues){
System.out.println( value.toString());
}
遍历某个JsonNode的key和value(value可能是字符串也可能是子jsonNode,但如果value是jsonNode数组的话,是无法读取的)
 
Iterator<Map.Entry<String,JsonNode>> jsonNodes = jsonNode.fields();
while (jsonNodes.hasNext()) {
Map.Entry<String, JsonNode> node = jsonNodes.next();
System.err.println("遍历获取key:"+node.getKey());
System.err.println("遍历获取值:"+node.getValue().toString());
}
如果是JDK1.8的话,可以这样遍历JsonNode的子节点
 
 
jsonNode.forEach((JsonNode node)->{
System.out.println("结果:"+node.toString());
});
JsonNode对象转换成JSON字符串
 
String jsonStr = mapper.writeValueAsString(jsonNode);
System.out.println("JsonNode--->Json:"+jsonStr);

2.JsonObject( fastjson)

json字符串转换成JsonObject对象
 
String studentJson = "{\"stuId\":\"116\",\"stuName\":\"赵云\",\"stuAddress\":\"常山\",\"stuIQ\":\"93\"}";
JSONObject object = JSON.parseObject(studentJson);
JsonObject对象转换成JavaBean
Student student = object.toJavaObject(Student.class);
json字符串转换成JavaBean
Student stu = JSON.parseObject(studentJson,Student.class);
JsonObject对象根据key获取对应的值
String name = object.getString("stuName");
其他的常用方法
 
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); // 将JavaBean转换为JSONObject或者JSONArray。
原文地址 https://blog.csdn.net/mst1010/article/details/78589059
你可能感兴趣的文章
Unity3D手机斗地主游戏开发实战(02)_叫地主功能实现
查看>>
qt日志实现
查看>>
Lottie 站在巨人的肩膀上实现 Android 酷炫动画效果
查看>>
Linux_异常_08_本机无法访问虚拟机web等工程
查看>>
Spring For All 顶级Spring综合社区服务平台
查看>>
linux系统编程
查看>>
VS Code 的常用快捷键和插件
查看>>
去除inline-block元素间间距
查看>>
批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务...
查看>>
您的网卡配置暂不支持1000M宽带说明
查看>>
“陪护机器人”研报:距离真正“陪护”还差那么一点
查看>>
Python学习笔记
查看>>
http协议内容
查看>>
C#语法——await与async的正确打开方式
查看>>
第38天:运算符、字符串对象常用方法
查看>>
换了电脑如何使用hexo继续写博客
查看>>
深入框架本源系列 —— Virtual Dom
查看>>
北大CIO走进龙泉寺交流研讨会圆满举行
查看>>
Android View滚动、拉伸到顶/底部弹性回弹复位
查看>>
mongodb分布式集群搭建手记
查看>>