簡體   English   中英

使用GSON比較兩個JSON字符串的正確方法是什么?

[英]What is the right way to compare two JSON Strings using GSON?

使用GSON比較兩個JSON字符串的正確方法是什么?

boolean match = false;
String json2 = "some json string";
String json1 = "another json string";
JsonParser parser = new JsonParser();
JsonElement t2 = parser.parse(json2);
JsonElement t1 = parser.parse(json1);
match = t2.equals(t1); // compare two json strings
if (match) {
    // do something
}

我上面的代碼是否適合兩個JSON比較?

您是否嘗試運行提供的示例代碼? 如果您使用2個相等的JSON字符串但重新排列鍵的順序,則會找到答案...

這是示例代碼:

String json1="  { \"name\" :\"ABC\",\"city\":\"XYZ\"}";
String json2="  { \"city\":\"XYZ\", \"name\" :\"ABC\"}";

JsonParser parser = new JsonParser();
JsonElement t2 = parser.parse(json2);
JsonElement t1 = parser.parse(json1); // returns true

您是說比較是真正的字符串到字符串還是內容到內容?

如果要在字符串之間進行比較,則應使用

int difference=aStr.compareTo(bStr);

如果要在內容之間進行比較,則應使用GSON將JSON轉換為POJO並在該POJO中實現equalsTo方法。

例如:

public class City implements Comparable<City>{
    public String name;
    public int population;

    public int compareTo(City b){
        return name.compareTo(b.name)+population-b.population;
    }
}

Gson g=new Gson();
City a=g.fromJson(jsonA, City.class);
City b=g.fromJson(jsonB, City.class);

int difference=a.compareTo(b);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM