【问题标题】:Problems parsing JSON in Java在 Java 中解析 JSON 的问题
【发布时间】:2014-11-04 02:33:17
【问题描述】:

我有这个 json:

[{
    "name": "prog 1",
    "show": [{
        "name": "n1",
        "time": "01.10 "
    }, {
        "name": "n2",
        "time": "01.35 "
    }]
}, {
    "name": "prog 2",
    "show": [{
        "name": "n1",
        "time": "01.10 "
    }, {
        "name": "n2",
        "time": "01.35 "
    }]
}]

现在尝试用 Java 解析它:

JSONObject json=new JSONObject(json_str);

抛出异常,因为它不是以 { 开头,而是 [ 因为它是一个数组。我可以在 js 中毫无问题地解析它,但显然我无法用这个字符串加载 JSONArray...

【问题讨论】:

  • 检查一下 -> stackoverflow.com/questions/5650171/… 如果有帮助的话。
  • 有时如果您不仅描述您遇到的异常,而且在您的问题中包含堆栈跟踪,我们会更容易为您提供帮助。
  • 输入包含一个数组,而不是一个对象。
  • 访问 json.org 并学习语法。您有一个对象数组(并且对象包含数组)。您需要使用 JSONArray。

标签: java json


【解决方案1】:

你可以试试下面的代码

JSONObject jObject  = new JSONObject(json_str);
JSONArray array = jObject.getJSONArray("show");    
for(int i = 0 ; i < array.length() ; i++)
{
    System.out.println(array.getJSONObject(i).getString("name"));
    System.out.println(array.getJSONObject(i).getString("time"));
}

会有帮助的...

【讨论】:

    【解决方案2】:

    使用:JSONArray objArray = new JSONArray (json_str);

    // to access the individual objects inside the array:
    
    for(int i=0;i<objArray.length();i++)
    {
      JSONObject obj = objArray.getJSONObject(i);
    }
    

    【讨论】:

      【解决方案3】:

      你试过了吗:

          JSONArray arr = new JSONArray(stringWithContent);
      

      然后像这样访问它:

          for(int i = 0; i<arr.length();i++){
              System.out.println(arr.get(i));
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多