Gson – 比較兩個順序無關的json字串

龍ing3發表於2017-05-23

Gson – 比較兩個順序無關的json字串

當map的資料轉化為json,由於map是無序的,因此json輸出也是無順序的,
當我們相比較兩個json是否相同,我們需要忽略他們的順序進行比較,比較方法有如下:

假設我們map中有id,name,轉化為json後有如下兩種可能:

String json1 = "{"id":1,"name":"eric"}";
String json2 = "{"name":"eric","id":1}";

1.轉化為JsonObejct進行比較

JsonParser parser = new JsonParser();
JsonObject obj = (JsonObject) parser.parse(json1);
JsonParser parser1 = new JsonParser();
JsonObject obj1 = (JsonObject) parser1.parse(json2);
System.out.println(obj.equals(obj1));

執行結果:true

2.轉化為JsonTree進行比較

Gson gson = new GsonBuilder().create(); 
JsonElement e1 = gson.toJsonTree(json1);
JsonElement e2 = gson.toJsonTree(json2);  
System.out.println(e1.equals(e2));  

執行結果:false

3.轉化為JsonPrimitive進行比較

JsonElement e3 = new JsonPrimitive(json1);
JsonElement e4 = new JsonPrimitive(json2);
System.out.println(e3.equals(e4));

執行結果:false

因此轉化為jsonObject進行比較可以滿足我們的要求

相關文章