JsonNode、JsonObject常⽤⽅法
最近项⽬中要⽤json,闲暇时间,对json进⾏下总结。
1.JsonNode
项⽬中⽤到的jar包
1.
import com.JsonParseException;
2.
import com.fasterxml.jackson.databind.JsonMappingException;
3.
import com.fasterxml.jackson.databind.JsonNode;
4.
import com.fasterxml.jackson.databind.ObjectMapper;
5.
import springfox.documentation.schema.Entry;
6.
import java.io.IOException;
7.
import java.util.*;
Json字符串
1.
String json = "{\"username\":\"tom\",\"company\":{\"companyName\":\"中华\",\"address\":\"北京\"},\"cars\":[\"奔驰\",\"宝马\"]"};
2.
String arrayJson = "[{\"number\":64,\"result\":\"SUCCESS\"},{\"number\":65,\"result\":\"FAILURE\"},{\"number\":66,\"result\":\"ABORTED\"},
{\"number\":67,\"result\":\"SUCCESS\"}]";
Json字符串转换成JsonNode对象
1.
ObjectMapper mapper = new ObjectMapper();
2.
JsonNode jsonNode = adTree(json);
jsonNode的fieldNames⽅法是获取jsonNode的所有的key值
1.
Iterator<String> keys = jsonNode.fieldNames();
2.
while(keys.hasNext()){
3.
String key = ();
4.
System.out.println("key键是:"+key);
5.
}
根据key值获取对应的值
1.
JsonNode path = jsonNode.path("username");
2.
JsonNode resultValue = jsonNode.findValue("username");
3.
JsonNode resultPath = jsonNode.findPath("username");
如果value为String,可以这样读取jsonNode的asText()⽅法获取到字符串,其他类型可以jsonNode.findValue("number").asInt();这⼏种⽅法都可以根据key获取到相应的值,匹配到⼀个就停⽌搜索。resultValue和resultPath的区别在于,如果没有匹配如果是⼀个JsonNode数组,使⽤jsonNode.elements();读取数组中每个node,如果不是JsonNode数组,使⽤jsonNode.elements();返回jsonNode的values
1.
Iterator<JsonNode> elements = jsonNode.elements();
2.
while(elements.hasNext()){
3.
JsonNode node = ();
4.
System.out.String());
5.
}
取出所有key值为number的JsonNode的List
1.
List<JsonNode> findKeys = jsonNode.findParents("number");
2.
for (JsonNode result:findKeys){
3.
4.
}
取出所有key值为number对应的value(如果value中包含⼦jsonNode并且⼦jsonNode的key值也为number,是⽆法捕获到并加⼊list的)
1.
List<JsonNode> findValues = jsonNode.findValues("number");
2.
for(JsonNode value: findValues){
3.
System.out.println( String());
4.
}
遍历某个JsonNode的key和value(value可能是字符串也可能是⼦jsonNode,但如果value是jsonNode数组的话,是⽆法读取的)
1.
Iterator<Map.Entry<String,JsonNode>> jsonNodes = jsonNode.fields();
2.
while (jsonNodes.hasNext()) {
3.
Map.Entry<String, JsonNode> node = ();
4.
5.
fastjson字符串转数组
6.
}
如果是JDK1.8的话,可以这样遍历JsonNode的⼦节点
1.
jsonNode.forEach((JsonNode node)->{
2.
System.out.println("结果:"+String());
3.
});
JsonNode对象转换成JSON字符串
1.
String jsonStr = mapper.writeValueAsString(jsonNode);
2.
System.out.println("JsonNode--->Json:"+jsonStr);
2.JsonObject( fastjson)
json字符串转换成JsonObject对象
1.
String studentJson = "{\"stuId\":\"116\",\"stuName\":\"赵云\",\"stuAddress\":\"常⼭\",\"stuIQ\":\"93\"}";
2.
JSONObject object = JSON.parseObject(studentJson);
JsonObject对象转换成JavaBean
Student student = JavaObject(Student.class);
json字符串转换成JavaBean
Student stu = JSON.parseObject(studentJson,Student.class);
JsonObject对象根据key获取对应的值
String name = String("stuName");
其他的常⽤⽅法
1.
public static final Object parse(String text); // 把JSON⽂本parse为JSONObject或者JSONArray
2.
public static final JSONArray parseArray(String text); // 把JSON⽂本parse成JSONArray
3.
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON⽂本parse成JavaBean集合
4.
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON⽂本
5.
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON⽂本6.
public static final Object toJSON(Object javaObject); // 将JavaBean转换为JSONObject或者JSONArray。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。