使用的代码:
jObj = new JSONObject(json);
newJSONString = jObj.getString("payload");
JArray = new JSONArray(newJSONString);
这是JArray的样子:
[{“” 06:30:00“:{” color“:”灰色“,” time_color“:”黑色“},” 06:45:00“:{” color“:”灰色“,” time_color “:” black“}}]
现在我想遍历接收到的时间并打印其颜色,该怎么做?
我尝试过的事情:
for (int i = 0; i < JArray.length(); ++i) {
JSONObject rec = null;
try {
rec = JArray.getJSONObject(i);
} catch (JSONException e) {
e.printStackTrace();
}
android.util.Log.e("print row:", String.valueOf(rec));
}
这只是给我这个输出:
{“ 06:30:00”:{“ color”:“灰色”,“ time_color”:“黑色”},“ 06:45:00”:{“ color”:“灰色”,“ time_color” :“黑色”}}
答案 0 :(得分:1)
您将得到此输出,因为您的JSON数组仅包含一个JSON对象,该对象是-{“ 06:30:00”:{“ color”:“ grey”,“ time_color”:“ black”},“ 06: 45:00“:{” color“:”灰色“,” time_color“:”黑色“}}
在回答您的问题之前,我建议您使用JSON语法。它将帮助您有效地理解问题和答案。
回到您的问题,以便从嵌套的JSON中获取“颜色”字段:
遍历JSON对象中的键。您的情况是- “ 06:30:00”,“ 06:45:00”。您可以用谷歌搜索解决方案 通过Java中JSON对象中的键。
获取与给定键(时间)关联的嵌套对象-您可以使用 Json库为此提供的getJSONObject()方法。
从json对象获取“颜色”字段-您可以使用optString()或 Json库为此提供的getString()方法取决于
这里是您遇到问题的Java解决方案:
public static void getColor(JSONObject payloadObject) {
try {
JSONArray keys = payloadObject.names();
for (int i = 0; i < keys.length(); i++) {
String key = keys.getString(i); // Here's your key
JSONObject value = payloadObject.getJSONObject(key); // Here's your value - nested JSON object
String color = value.getString("color");
System.out.println(color);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
请注意,您认为作为有效负载收到的对象是JSON对象。
希望这会有所帮助。
谢谢。
答案 1 :(得分:0)
使用返回Keys()
的{{1}}方法,以便迭代每个嵌套的Iterator<String>
JSON