在Android中比较两个JSONArray

时间:2016-11-19 12:43:14

标签: android arrays json compare

我想将两个JSONArray与具有不同顺序的相同值进行比较,以便比较它。如果值放在同一索引中,则此代码可以正常工作。

String a = "[\"ABC-110101-056079-0001\",\"CBA-111101-056079-0001\",\"BCD-110101-056079-0011\"]";
String b = "[\"ABC-111101-056079-0001\",\"CBA-110101-056079-0001\",\"BCD-110101-056079-0011\"]";

JSONArray jsonArraya = null;
JSONArray jsonArrayb = null;
try {
    jsonArraya = new JSONArray(a);
    jsonArrayb = new JSONArray(b);
} catch (JSONException e) {
    e.printStackTrace();
}

if (jsonArraya.equals(jsonArrayb)) {
    Log.i("TAG",str2 is equal to str1 = " + "true");
}

2 个答案:

答案 0 :(得分:0)

在这种情况下,最好的解决方案是首先使用Gson将这些数组的值解析为POJO个文件,之后创建.equals()方法,该方法会将数组中的所有字符串添加到{ {1}}。 然后Set<>超过一组并从另一组中删除所有当前项并删除相同的元素。如果最后在第二组中没有元素,则两个对象都是相同的。

答案 1 :(得分:0)

您可以将每个数组的元素添加到SortedSet实例并比较它们:

SortedSet<Object> seta = new TreeSet<>();
jsonArraya.forEach(seta::add);

SortedSet<Object> setb = new TreeSet<>();
jsonArrayb.forEach(setb::add);

Log.i("TAG", "str2 is equal to str1 = " + seta.equals(setb));