【发布时间】:2019-09-11 07:25:03
【问题描述】:
我正在尝试获取 JSONArray 的 JSONObjects 的数量。 我的 JSONArray 就像
varArray: [{"value1_1_1":0},{"value1_2_2":0},{"value1_4_1":0},{"value1_5_3":0},
{"value1_8_3":0},{"value1_1_9":0},{"value1_2_6":0},{"value1_4_1":0},{"value1_5_7":0},{"value1_8_9":0},{"value1_1_1":0},{"value1_1_1":0},{"value1_2_6":0},{"value1_2_6":0},{"value1_3_5":0},{"value1_3_5":0},{"value1_4_2":0},{"value1_4_2":0},{"value1_8_6":0},{"value1_8_6":0},{"value1_10_5":0},{"value1_10_5":0}];
我想用 JSONObject 的编号替换那些 '0'。想要的结果是
varArray: [{"value1_1_1":3},{"value1_2_2":1},{"value1_4_1":2},{"value1_5_3":1},
{"value1_8_3":1},{"value1_1_9":1},{"value1_2_6":3},{"value1_5_7":1},{"value1_8_9":1},{"value1_3_5":2},{"value1_4_2":2},{"value1_8_6":2},{"value1_10_5":2}];
我尝试了类似下面的方法但失败了。
JSONArray newArray = new JSONArray();
for(int i=0;i<varArray.size();i++){
JSONObject jsonFromArr = varArray.getJSONObject(i);
for(int a=1;a<=order1Max;a++){
for(int b=1;b<=order2Max;b++){
for(int c=1;c<=valueMax;c++){
if(jsonFromArr.get("value"+a+"_"+b+"_"+c) != null){
jsonArrayList.add(jsonFromArr.toString());
if(!newArray.contains(jsonFromArr)){
newArray.add(jsonFromArr);
} else{
// I can't figure out what to do here.
}
}
}
}
}
}
我认为结果应该计入循环,因为 JSONObject 的键是动态的。如何获得我想要的结果?
---已编辑
完整代码(替换一些必须搜索数据库的部分)
JSONArray varArray = [{"value1_1_1":0},{"value1_2_2":0},{"value1_4_1":0},{"value1_5_3":0},{"value1_8_3":0},{"value1_1_9":0},{"value1_2_6":0},{"value1_4_1":0},{"value1_5_7":0},{"value1_8_9":0},{"value1_1_1":0},{"value1_1_1":0},{"value1_2_6":0},{"value1_2_6":0},{"value1_3_5":0},{"value1_3_5":0},{"value1_4_2":0},{"value1_4_2":0},{"value1_8_6":0},{"value1_8_6":0},{"value1_10_5":0},{"value1_10_5":0}];
JSONArray newArray = new JSONArray();
for(int i=0;i<varArray.size();i++){
JSONObject jsonFromArr = varArray.getJSONObject(i);
for(int a=1;a<=1;a++){
for(int b=1;b<=10;b++){
for(int c=1;c<=9;c++){
if(jsonFromArr.get("value"+a+"_"+b+"_"+c) != null){
if(!newArray.contains(jsonFromArr)){
newArray.add(jsonFromArr);
} else{
// I can't figure out what to do here.
}
}
}
}
}
}
【问题讨论】:
-
我会用一个简单的
Map<String, int> -
@Yoojin Kim 你能把你的整个代码贴在这里吗?我想在本地运行它并对其进行更改。