gpt4 book ai didi

java - JSONArray 中的多重匹配

转载 作者:行者123 更新时间:2023-11-29 04:26:25 27 4
gpt4 key购买 nike

我有一个 JSONArray 的形式:

    [[{ "Country" : "IN", "count" : 10},{ "Country" : "US", "count" : 20}], [{ "Country" : "IN", "count" : 10},{ "Country" : "US", "count" : 20}], [{ "Country" : "IN", "count" : 10},{ "Country" : "US", "count" : 20}]]

我想像上面的例子那样比较各个字段因为 { "Country": "IN", "count": 10} 等于 { "Country": "IN", "count": 10}{ "Country": "IN", "count": 10}{ "Country": "US", "count": 20} 等于 { "Country": "US", "count": 20}{ "Country": "US", "count": 20},我应该得到匹配结果。

但是对于像下面这样的情况,我应该得到一个不匹配的结果,因为 count 不匹配。

[[{ "Country" : "IN", "count" : 45},{ "Country" : "US", "count" : 60}],
[{ "Country" : "IN", "count" : 10},{ "Country" : "US", "count" : 20}],
[{ "Country" : "IN", "count" : 10},{ "Country" : "US", "count" : 20}]]

我能够将数据放入 HashMap 中。但我无法找到一种方法,如何比较。

myArray 包含上述 JSONArray。

int length = myArray.getJSONArray(0).length();
Map<String, Integer> cargo = new HashMap<>();
for (int j = 0; j < myArray.length(); j++) {
for (int k = 0; k < myArray.getJSONArray(j).length(); k++) {
String country = myArray.getJSONArray(j).getJSONObject(k).getString(DataConstants.COUNTRY);
Integer count = myArray.getJSONArray(j).getJSONObject(k).getInt(DataConstants.COUNT);
cargo.put(country, count);
}

}

if (cargo.size() == length) {
System.out.println("Data Matched !!");
return true;
}

else
System.out.println("Data Not Matched !!");
return false;

谢谢,

最佳答案

您可以创建一个名为 Country 的类,您可以使用它来保存 JSON 数组中的数据。

class Country {
private String countryCode;
private int count;

@Override
public boolean equals(Object obj) {
// compare your properties
}

@Override
public int hashCode() {
// Calculate a int using properties
}
}

看看this tutorial关于如何实现您的 equalshashcode 方法。

然后,您需要将 JSON 数组转换为 java 对象。看看this tutorial .

关于java - JSONArray 中的多重匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46083533/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com