【问题标题】:Parsing Json from server从服务器解析 Json
【发布时间】:2017-10-04 15:02:44
【问题描述】:

我怎样才能像这样解析 json:

{"SizeOptions": [
{
  "Name": "دور باسن",
  "GroupSizeId": 2,
  "Id": 5,
  "LangId": 0
},
{
  "Name": "دور کمر",
  "GroupSizeId": 2,
  "Id": 6,
  "LangId": 0
} ],"SizeValues": [
{
  "Value": "a",
  "SizeId": 11,
  "SizeOptionId": 5,
  "ProductId": 1069,
  "Id": 145627,
  "LangId": 0
},
{
  "Value": "a",
  "SizeId": 11,
  "SizeOptionId": 8,
  "ProductId": 1069,
  "Id": 145630,
  "LangId": 0
}  ],"Sizes": [
{
  "Name": "XXL",
  "GroupSizeId": 2,
  "Id": 11,
  "LangId": 0
},
{
  "Name": "L",
  "GroupSizeId": 2,
  "Id": 12,
  "LangId": 0
}]}

我想将所有名称放在不同字符串的“SizeOptions”中(字符串名称1,名称2,名称3)

我试过这个开始:

 JSONObject jObject = new JSONObject(response);
 JSONObject p = jObject.getJSONObject("SizeOptions");
 String name = p.getString("Name");

但它只是给了我一个“空”值! 它有什么问题?我该如何解决?请帮忙

【问题讨论】:

  • SizeOptions 是一个数组。

标签: java android json


【解决方案1】:
JSONObject jObject = new JSONObject(response);
JSONSONArray p = jObject.getJSONArray("SizeOptions");

for(int i=0;i<p.length();i++)
{
    JSONObject jObjectValue=p.getJSONObject(i);
    String name = jObjectValue.getString("Name");
}

【讨论】:

  • 我不得不查一下,确实 android sdk API 中的 JSONArray 是不可迭代的。如此糟糕的 API。
  • @AluanHaddad 替代方案是您可以将 GSON lib 与自定义对象和 pojo 一起使用
【解决方案2】:

您正在尝试将 JSONArray 作为 JSONObject。请尝试以下操作:

    JSONObject jObject = new JSONObject(response);
    List<String> names = new ArrayList<>();
    JSONArray p = jObject.getJSONArray("SizeOptions");
    for (int i = 0; i < p.length(); i++) {
        JSONObject jo = p.getJSONObject(i);
        String name = jo.getString("Name");
        names.add(name);
    }

    System.out.println(names);

【讨论】:

    猜你喜欢
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多