JsonNode、JsonObject常用方法


 

 最近項目中要用json,閑暇時間,對json進行下總結。

1.JsonNode

項目中用到的jar包
  1.  
    import com.fasterxml.jackson.core.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 = mapper.readTree(json);
jsonNode的fieldNames方法是獲取jsonNode的所有的key值
 
           
  1.  
    Iterator<String> keys = jsonNode.fieldNames();
  2.  
    while(keys.hasNext()){
  3.  
    String key = keys.next();
  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的區別在於,如果沒有匹配到任何key值為性別,resultValue為null,resultPath為空JsonNode,第一種的區別不是很清楚。
 
           
如果是一個JsonNode數組,使用jsonNode.elements();讀取數組中每個node, 如果不是JsonNode數組,使用jsonNode.elements();返回jsonNode的values
 
           
  1.  
    Iterator<JsonNode> elements = jsonNode.elements();
  2.  
    while(elements.hasNext()){
  3.  
    JsonNode node = elements.next();
  4.  
    System.out.println(node.toString());
  5.  
    }
 
           
 取出所有key值為number的JsonNode的List
 
           
  1.  
    List<JsonNode> findKeys = jsonNode.findParents( "number");
  2.  
    for (JsonNode result:findKeys){
  3.  
    System.err.println(result.toString());
  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( value.toString());
  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 = jsonNodes.next();
  4.  
    System.err.println( "遍歷獲取key:"+node.getKey());
  5.  
    System.err.println( "遍歷獲取值:"+node.getValue().toString());
  6.  
    }
如果是JDK1.8的話,可以這樣遍歷JsonNode的子節點
 
           
  1.  
    jsonNode.forEach((JsonNode node)->{
  2.  
    System.out.println( "結果:"+node.toString());
  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 = object.toJavaObject(Student.class);
json字符串轉換成JavaBean
Student stu = JSON.parseObject(studentJson,Student.class);
JsonObject對象根據key獲取對應的值
String name = object.getString("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。

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM