2 回答

TA貢獻1785條經驗 獲得超4個贊
您得到此輸出是因為您的 JSON 數組僅包含一個 JSON 對象,即 - {"06:30:00":{"color":"grey","time_color":"black"},"06:45:00 “:{“顏色”:“灰色”,“time_color”:“黑色”}}
在回答您的問題之前,我建議您先了解一下 JSON 語法。它將幫助您有效地理解您的問題和答案。
回到您的問題,為了從嵌套的 JSON 中獲取“顏色”字段:
遍歷 JSON 對象中的鍵。在你的情況下,這些是 - “06:30:00”,“06:45:00”。您可以在 google 上搜索解決方案來遍歷 java 中的 JSON 對象中的鍵。
獲取與給定鍵(時間)關聯的嵌套對象 - 您可以為此使用 Json 庫提供的 getJSONObject() 方法。
從 json 對象獲取“顏色”字段 - 您可以使用 Json 庫為此提供的 optString() 或 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 對象。
希望這可以幫助。

TA貢獻1877條經驗 獲得超6個贊
使用Keys()返回的方法Iterator<String>,以便很容易迭代每個嵌套JSON
for (int i = 0; i < JArray.length(); ++i) {
try {
JSONObject rec = JArray.getJSONObject(i);
Iterator<String> keys = rec.keys();
while(keys.hasNext()) {
String key1 = keys.next();
JSONObject nested = rec.getJSONObject(key1); //{"color":"grey","time_color":"black"}
//now again same procedure
Iterator<String> nestedKeys = nested.keys();
while(nestedKeys.hasNext()) {
String key2 = nestedKeys.next();
System.out.println("key"+"..."+key2+"..."+"value"+"..."+nested.getString(key2);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
android.util.Log.e("print row:", String.valueOf(rec));
}
添加回答
舉報