我试图从我的JSONObject中提取键和值,但是我无法做到。这是JSON:
[{"id":["5"]},{"Tech":["Java"]}]
一开始它是一个字符串。我使用以下方式将其转换为JSONObject:
JSONObject jsonObj = new JSONObject("[{"id":["5"]},{"Tech":["Java"]}]");
然后我试图通过以下方式获取键和值:
jsonObj.getString("id");
但是它返回了空值。有人能帮我解决这个问题吗?
试试这个:
try {
JSONArray jsonArr = new JSONArray("[{\"id\":[\"5\"]},{\"Tech\":[\"Java\"]}]");
for (int i = 0; i < jsonArr.length(); i++) {
JSONObject jsonObj = jsonArr.getJSONObject(i);
String k = jsonObj.keys().next();
Log.i("Info", "Key: " + k + ", value: " + jsonObj.getString(k));
}
} catch (JSONException ex) {
ex.printStackTrace();
}
[{"id":["5"]},{"Tech":["Java"]}]
,请注意中间的},{
。 - Jason CJSONObject jsonObj = new JSONObject("{'id':['5','6']},{'Tech':['Java']}");
System.out.println(jsonObj.getString("id"));
JSONArray jsonArray = new JSONArray("[{'id':['5','6','7','8']},{'Tech':['Java']}]");
System.out.println(jsonArray.length());
for(int i=0;i<jsonArray.length();i++){
System.out.println(jsonArray.getJSONObject(i).getString("id"));
}
因为在id
处,你没有一个字符串,而是一个字符串数组,
所以不要这样做
jsonObj.getString("id");
而应该这样做
jsonObj.getArray("id");
这将返回该数组
例如,如果你在id
处有一个Json数组,则必须执行此操作
jsonObj.getJSONArray("id");
JSONObject
实现都没有定义名为 getArray
的方法;其次,getJSONArray("id")
不适用于给定的 JSON 数据,它适用于 {"id":["5"],"Tech":["Java"]}
这样的数据,而不是我们所给出的数据。 - Jason C
id
。 - Shyam Baitmangalkar