【问题标题】:JSONObject in JSONObjectJSONObject 中的 JSONObject
【发布时间】:2012-08-02 15:40:25
【问题描述】:

我有一个这样的 API 输出:

{"user" : {"status" : {"stat1" : "54", "stats2" : "87"}}}

我从这个 API 创建了一个简单的JSONObject

JSONObject json = getJSONfromURL(URL);

之后我可以像这样读取用户的数据:

String user = json.getString("user");

但是如何获取stat1stat2 的数据?

【问题讨论】:

    标签: java android json


    【解决方案1】:

    JSONObject 为许多不同的数据类型提供访问器,包括嵌套的JSONObjectsJSONArrays,使用JSONObject.getJSONObject(String)JSONObject.getJSONArray(String)

    鉴于您的 JSON,您需要执行以下操作:

    JSONObject json = getJSONfromURL(URL);
    JSONObject user = json.getJSONObject("user");
    JSONObject status = user.getJSONObject("status");
    int stat1 = status.getInt("stat1");
    

    请注意这里缺少错误处理:例如,代码假定存在嵌套成员 - 您应该检查 null - 并且没有异常处理。

    【讨论】:

    • 你的意思是JSONObject user = json.getJSONObject("user")
    【解决方案2】:
    JSONObject mJsonObject = new JSONObject(response);
    JSONObject userJObject = mJsonObject.getJSONObject("user");
    JSONObject statusJObject = userJObject.getJSONObject("status");
    String stat1 = statusJObject.getInt("stat1");
    String stats2 = statusJObject.getInt("stats2");
    

    从您的响应中 userstatus 是 Object 因此使用 getJSONObjectstat1 stats2status 对象键,因此使用 getInt() 方法获取整数值并使用 getString() 方法获取字符串值。

    【讨论】:

      【解决方案3】:

      要访问 JSON 中的属性,您可以使用 JSON.parse 解析对象,然后访问所需的属性,例如:

      var star1 = user.stat1;
      

      【讨论】:

        猜你喜欢
        • 2020-01-09
        • 1970-01-01
        • 2018-11-14
        • 2018-06-05
        • 1970-01-01
        • 1970-01-01
        • 2015-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多