使用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比较?
答案 0 :(得分:1)
您是否尝试过运行所提供的示例代码?如果您使用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
答案 1 :(得分:-2)
你的意思是比较真的是字符串到字符串还是内容到内容?
如果要比较字符串到字符串,则应使用
int difference=aStr.compareTo(bStr);
如果您要比较内容与内容,则应使用GSON将JSON转换为POJO并在该POJO中实现equalsTo方法。
e.g:
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);