JsonNode、JsonObject常用方法[通俗易懂]

作者:

文章目录
  • 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。
  •  最近项目中要用json,闲暇时间,对json进行下总结。

    项目中用到的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);

    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。
          

    评论

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注

    站内搜索