• 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。

       

  • 相关阅读:
    微信小程序开发(十一)获取手机的完整详细信息
    24小时学通Linux内核总结篇(kconfig和Makefile & 讲不出再见)
    24小时学通Linux内核之向内核添加代码
    24小时学通Linux内核之构建Linux内核
    24小时学通Linux内核之电源开和关时都发生了什么
    24小时学通Linux内核之调度和内核同步
    24小时学通Linux内核之有关Linux文件系统实现的问题
    24小时学通Linux内核之如何处理输入输出操作
    24小时学通Linux内核之内存管理方式
    24小时学通Linux内核之进程
  • 原文地址:https://www.cnblogs.com/williamjie/p/9266748.html
Copyright © 2020-2023  润新知