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進行比較可以滿足我們的要求