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

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

當map的數據轉化爲json,因爲map是無序的,所以json輸出也是無順序的,
當咱們相比較兩個json是否相同,咱們須要忽略他們的順序進行比較,比較方法有以下:json

假設咱們map中有id,name,轉化爲json後有以下兩種可能:ui

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進行比較能夠知足咱們的要求code

相關文章
相關標籤/搜索