• 比较两个JSON字符串是否完全相等


    RT,比较两个JSON字符串是否完全相等,这里使用google贡献的Gson。


    一,no POJO,即不另外创建一个简单Java类

    [java] view plain copy
    1. String str1 = "{"properties":{"packet":{"recorded_at":"2015-09-02 04:45:45 +0000","userId":"100000000000001","meta":{"account":"xxx","event":"track"},"fields":{"gyroData":{"rotation_y":-1,"rotation_z":-1,"rotation_x":-1},"accelerometerData":{"acceleration_x":-1,"acceleration_z":-1,"acceleration_y":-1},"location":{"speed":4.68,"speed_course":0.7,"horizontal_accuracy":10,"longtitude":-122.02359082,"vertical_accuracy":-1,"latitude":37.33385024},"pedometerData":{"step_count":0}},"recorded_sample_rate":5}},"geometry":{"type":"Point","coordinates":[37.33385024,-122.02359082]},"type":"Feature"}";  
    2. String str2 = "{"properties":{"packet":{"recorded_at":"2015-09-02 04:45:45 +0000","userId":"100000000000001","meta":{"account":"xxx","event":"track"},"fields":{"gyroData":{"rotation_y":-1,"rotation_z":-1,"rotation_x":-1},"accelerometerData":{"acceleration_x":-1,"acceleration_z":-1,"acceleration_y":-1},"location":{"speed":4.68,"speed_course":0.7,"horizontal_accuracy":10,"longtitude":-122.02359082,"vertical_accuracy":-1,"latitude":37.33385024},"pedometerData":{"step_count":0}},"recorded_sample_rate":5}},"geometry":{"type":"Point","coordinates":[37.33385024,-122.02359082]},"type":"Feature"}";  
    3.           


    // method 1
    [java] view plain copy
    1. import com.google.gson.JsonObject;  
    2. import com.google.gson.JsonParser;  
    3.   
    4.   
    5.         JsonParser parser = new JsonParser();  
    6.         JsonObject obj = (JsonObject) parser.parse(str1);  
    7.         JsonParser parser1 = new JsonParser();  
    8.         JsonObject obj1 = (JsonObject) parser1.parse(str2);  
    9.           
    10.         System.out.println(obj.equals(obj1));  

    //method 2

    [java] view plain copy
    1. import com.google.gson.Gson;  
    2. import com.google.gson.GsonBuilder;  
    3. import com.google.gson.JsonElement;  
    4.   
    5. Gson gson1 = new GsonBuilder().create();//or new Gson()   
    6.         JsonElement e1 = gson1.toJsonTree(str1);//or new Gson()   
    7.           
    8.         Gson gson2 = new GsonBuilder().create();  
    9.         JsonElement e2 = gson2.toJsonTree(str2);  
    10.         System.out.println(e1.equals(e2));  

    //method 3

    [java] view plain copy
    1. import com.google.gson.JsonElement;  
    2. import com.google.gson.JsonPrimitive;  
    3.   
    4. JsonElement e3 = new JsonPrimitive(str1);  
    5.         JsonElement e4 = new JsonPrimitive(str2);  
    6.         System.out.println(e3.equals(e4));  


    reference:

    Gson: Directly convert String to JsonObject (no POJO)


    二,使用简单POJO类,和mentor Yang讨论过这个问题,哪怕这个JSON字符串有多么复杂,一般情况下五层就达到上限了(上面那个Json String看起来那么”复杂“,才三层)。

    这里只是举个简单的栗子。因为这种方法看起来比第一种方式麻烦多了。

    步骤就是先建一个(或者多个)POJO类,类中的属性名和JSON字符串中的key名一一对应。

    然后:

    [java] view plain copy
    1. <span style="white-space:pre">        </span>Gson gson = new Gson();//new一个Gson对象  
    2.         //json字符串  
    3.         String json = "{"name":"guolicheng","id":123456,"date":"2013-4-13 12:36:54"}";  
    4.         //new 一个Product对象  
    5.         Product product = new Product();  
    6.         //将一个json字符串转换为java对象  
    7.         <strong><span style="color:#ff0000;">product = gson.fromJson(json, Product.class);</span></strong>  
    8.         //输出  
    9.         System.out.println("Name:" + product.getName());  
    10.         System.out.println("Id:" + product.getId());  
    11.         System.out.println("Date:" + product.getDate());  

    reference:

    使用Gson解析json


    最后,提供一份可直接访问(不需要梯子)的Online Gson Doc:http://tool.oschina.net/apidocs/apidoc?api=gson2.2.2。

  • 相关阅读:
    ie不支持 event.stopPropagation 的解决方式
    jquery 获取 元素.text( ) 里面的值 需要进行去空格去换行符操作
    使用插件实现某元素展示特定行文字,超出显示...
    css文字超出显示省略号
    纯css实现各种三角形图案
    jQuery判断鼠标是否在某个元素内
    z-tree相关设置
    js提取字符串中的汉字
    扩展ie中不兼容的startsWith,endsWith方法
    获取浏览器URL携带过来的参数/获取url中"?"符后的字串
  • 原文地址:https://www.cnblogs.com/wxmdevelop/p/10147994.html
Copyright © 2020-2023  润新知