【发布时间】:2021-04-15 15:57:39
【问题描述】:
{
"clientes":[
{
"codigo":"1341",
"empresa":0,
"nombre":"asd",
"e_mail":"cli@cli.com"
},
{
"codigo":"5435",
"empresa":0,
"nombre":"asd",
"e_mail":"cli@cli.com"
}
]
}
我正在尝试从 json 中提取键和值,然后将所有键放入一个数组中,并将所有值放入另一个数组中。现在的问题是可以来多个客户端,所以我必须制作一个键数组列表和一个值数组列表
如您所见,在输出中,位置 [0] 的值与位置 [1] 的值相同,并且不应该是这样,因为在“codigo”字段中我发送了不同的值..
ArrayList listArrayKeys = new ArrayList();
ArrayList listArrayValues = new ArrayList();
ArrayList<String> arrayKeys = new ArrayList<>();
ArrayList<String> arrayValues = new ArrayList<>();
DatabaseHelper databaseHelper = new DatabaseHelper(this);
JSONObject jsonObject;
String tableName;
void getKeysAndValues() throws JSONException {
try {
Iterator<String> keys = jsonObject.keys();
while(keys.hasNext()) {
String key = keys.next();
System.out.println(key);
if(jsonObject.get(key) instanceof JSONArray) {
JSONArray array = (JSONArray) jsonObject.get(key);
for(int i = 0; i < array.length(); i++){
JSONObject object = (JSONObject) array.get(i);
Iterator<String> innerKeys = object.keys();
arrayValues.clear();
while(innerKeys.hasNext()) {
String innerKey = innerKeys.next();
String innerValue = object.getString(innerKey);
arrayKeys.add(innerKey);
arrayValues.add(innerValue);
System.out.println(innerKey);
}
listArrayKeys.add(arrayKeys);
listArrayValues.add(arrayValues);
}
Log.d("ARRAYVALUES", String.valueOf(listArrayValues));
}
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输出:
[[5435, 0, asd, cli@cli.com], [5435, 0, asd, cli@cli.com]
应该是:
[[1341, 0, asd, cli@cli.com], [5435, 0, asd, cli@cli.com]
【问题讨论】:
标签: java android json for-loop