【问题标题】:Get json array length and looping获取json数组长度和循环
【发布时间】:2015-01-01 16:06:58
【问题描述】:

所以我有一个像这样的网络服务的 json 响应

{
    error: false
    types: [2]
    -0:  {
        card_type_id: 5
        category: "Food & Beverages"
    }
    -1:  {
        card_type_id: 8
        category: "Entertaiment"
    }
}

我想要做的是获取json数组“类型”中的数字并使用它来循环设置将在listview中使用的arraylist的值,但是我的代码似乎无法获取json数组长度,这个是我的代码

JSONObject obj = new JSONObject(response);
if(!obj.getBoolean("error")){
    JSONArray types = obj.getJSONArray("types");
    for(int i=0; i<types.length();i++)
    {
        JSONObject a = types.getJSONObject(i);
        int ct_id = a.getInt("card_type_id");
        String category = a.getString("category");

        CardType ct = new CardType();
        ct.setTypeId(_ct_id);
        ct.setTypeCategory(_category);

        categoryArray.add(ct);
    }
}

谁能帮帮我?谢谢之前

【问题讨论】:

  • 对于初学者,您的 JSON 字符串无效。其次,在这种情况下 types.length() 是 1,而我怀疑你指望它是 2。目前还不清楚你在追求什么,但如果我走在正确的轨道上,我会发布带有正确 JSON 响应的答案。
  • @mjp66 感谢您的快速回复,它实际上是来自Web服务的json响应,您的无效是什么意思?你能给我一个正确的 JSON 响应的答案吗?对不起我的英语
  • 发布了一个带有正确响应示例的答案。至于您的网络服务,您将不得不对其进行调查,并找出为什么您得到的响应格式不正确。
  • @mjp66 谢谢先生,找到解决方案后我会立即发布正确答案。

标签: android json arrays


【解决方案1】:

这可能是您的 JSON 响应的样子(另请注意,键和字符串值应该用双引号括起来):

{
    "error": false,
    "types": [
        {
            "card_type_id": 5,
            "category": "Food & Beverages"
        },
        {
            "card_type_id": 8,
            "category": "Entertaiment"
        }
    ]
}

此示例中的 JSONArray“类型”的长度 (types.length()) 为 2。现在您可以实现您的 for 循环并且应该得到预期的结果。

【讨论】:

    【解决方案2】:

    实际上,从高级休息客户端看到 json 只是我的错,我使用 json 菜单,应用程序自动更正 json 并变为无效,在我更改为原始菜单后,我可以看到实际的 json 并更正代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 1970-01-01
      • 2017-03-24
      • 2021-11-29
      相关资源
      最近更新 更多