Java 获取嵌套的 JSON 对象/数组

标签 java android arrays json dictionary

使用的代码:

jObj = new JSONObject(json);
newJSONString = jObj.getString("payload");
JArray = new JSONArray(newJSONString);

这是 JArray 的样子:

[{"06:30:00":{"color":"grey","time_color":"black"},"06:45:00":{"color":"grey","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":"grey","time_color":"black"},"06:45:00":{"color":"grey","time_color":"black"}}

最佳答案

您得到此输出是因为您的 JSON 数组仅包含一个 JSON 对象,即 - {"06:30:00":{"color":"grey","time_color":"black"},"06: 45:00":{"color":"grey","time_color":"black"}}

在回答您的问题之前,我建议您先了解一下 JSON 语法。它将帮助您有效地理解您的问题和答案。

回到您的问题,为了从嵌套的 JSON 中获取“颜色”字段:

  1. 遍历 JSON 对象中的键。在你的情况下,这些是 - “06:30:00”、“06:45:00”。你可以谷歌出遍历的解决方案 通过 java 中的 JSON 对象中的键。

  2. 获取与给定键(时间)关联的嵌套对象 - 您可以使用 Json 库为此提供的 getJSONObject() 方法。

  3. 从 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 对象。

希望这对您有所帮助。

谢谢。

关于Java 获取嵌套的 JSON 对象/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57166783/

相关文章:

javascript - 使用 javascript 数组的 highcharts 饼图

arrays - MATLAB:循环元胞数组

java - 基于正则表达式用Java添加html标签,保持数据匹配

java - 按日、周或年对元素流进行分组

Java:本身的类和内存使用情况(例如:简单的二叉树实现)?

android - 抽屉导航上方的深色状态栏

java - jquery 中 .post 的多次使用

java - 如何强制退出Android应用程序并重新启动它?

java - 删除布局中按/触摸时的深色高光

arrays - 是否有内置函数来映射非 nil 元素,并删除数组的 nil 元素?