【问题标题】:Multidimensional array from json android来自json android的多维数组
【发布时间】:2014-11-06 22:05:44
【问题描述】:

我这里有这个 json:

[
        {
            "ID": "2",
            "Item Description": "Data removed for protection",
            "Link": "Data removed for protection",
            "Image": "Data removed for protection",
            "Valid From": "Data removed for protection",
            "Valid To": "Data removed for protection"
        },
        {
            "ID": "3",
            "Item Description": "Data removed for protection",
            "Link": "Data removed for protection",
            "Image": "Data removed for protection",
            "Valid From": "Data removed for protection",
            "Valid To": "Data removed for protection"
        },
{
            "ID": "4",
            "Item Description": "Data removed for protection",
            "Link": "Data removed for protection",
            "Image": "Data removed for protection",
            "Valid From": "Data removed for protection",
            "Valid To": "Data removed for protection"
        }
    ]

所以我将它下载到名为jArray 的JSONObject。然后我把它变成JSONArray,像这样:

JSONArray json_array = new JSONArray(jArray);

但是,每当我尝试像这样访问它时:json_array[0][0] IDE 会在其上抛出错误并显示:Array type expected; found: 'org.json.JSONArray'。

现在,不要误会我的意思,但 JSONArray 不应该以相同的方式访问多维方面吗?

【问题讨论】:

  • 你怎么能得出结论'JSONArray' 将多维数组作为数组[][] 给出?

标签: java android arrays json multidimensional-array


【解决方案1】:

JSONArray和普通的java数组不一样。JSONArray是不同的java对象。 @Kon 的回答提供了JSONArray 的基本概念。

如果您想从您的JSONArray 访问数据,您可以遍历它以获取每个JSONObject,然后从那里检索数据,例如

JSONArray json_array = new JSONArray(jArray);

    for (int i = 0; i < json_array.length() ; i++) {
              try{
                    JSONObject object1 = jsonArray.getJSONObject(i);
                    int id = object1.getInt("ID");
                    String itemDescription = object1.getString("Item Description");     
                    String link = object1.getString("Link");
                    .....//and so on        
                 }
              catch(Exception e){
                    e.printStackTrace();
                    }
                 }

【讨论】:

    【解决方案2】:

    不,它的行为方式不应与多维数组相同。

    这是因为json_array 不是一个数组,它是一个不同的Java 对象。使用上面显示的这种特定语法只能访问数组。您将需要查看此类的文档以了解如何访问所需的信息。它应该提供清晰且有据可查的方法来获得您需要的东西。

    您不希望这种语法允许您访问支持您的类的数组。这将违反封装并且总体上是糟糕的设计。

    这里是一个很好的起点http://www.json.org/javadoc/org/json/JSONArray.html

    【讨论】:

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