【问题标题】:Trying to read 2D array from Json to Android试图从 Json 读取二维数组到 Android
【发布时间】:2015-11-17 18:05:43
【问题描述】:

我在读取 Json 文档时遇到问题,因为我想读取如下所示的二维数组:

“地图”:[ [“PARED”,“PARED”,“PARED”,“PARED”,“PARED”,“PARED”,“PARED”,“PARED”,“PARED”,“PARED”], [“PARED”,“雪人”,“ESPACIO”,“PARED”,“ESPACIO”,“ESPACIO”,“ESPACIO”,“ESPACIO”,“ESPACIO”,“PUERTA”], [“PARED”,“ESPACIO”,“SOL”,“PARED”,“PARED”,“PARED”,“ESPACIO”,“PARED”,“ESPACIO”,“PARED”], [“PARED”,“ESPACIO”,“PARED”,“PARED”,“SOL”,“ESPACIO”,“ESPACIO”,“ESPACIO”,“ESPACIO”,“PARED”], [“PARED”,“ESPACIO”,“PARED”,“ESPACIO”,“ESPACIO”,“ESPACIO”,“SOL”,“ESPACIO”,“PARED”,“PARED”], ["PARED" , "ESPACIO" , "PARED" , "PARED" , "ESPACIO" , "PARED" , "PARED" , "ESPACIO" , "PARED" , "PARED"], [“PARED”,“ESPACIO”,“ESPACIO”,“ESPACIO”,“ESPACIO”,“PARED”,“SOL”,“ESPACIO”,“ESPACIO”,“PARED”], [“PARED”,“SOL”,“PARED”,“ESPACIO”,“PARED”,“PARED”,“ESPACIO”,“ESPACIO”,“SOL”,“PARED”], [“PARED”,“ESPACIO”,“ESPACIO”,“ESPACIO”,“ESPACIO”,“ESPACIO”,“ESPACIO”,“PARED”,“ESPACIO”,“PARED”], [“PARED”、“PARED”、“PARED”、“PARED”、“PARED”、“PARED”、“PARED”、“PARED”、“PARED”、“PARED”]]

并将其转换为“String [][] mapa;” Android Studio 中的数组,但我不知道如何读取和转换它。

非常感谢您的帮助。

编辑:我尝试过这样的事情,但我不知道如何继续:

mapObject.getJSONArray("地图")

EDIT2 类似的东西?:

JSONArray maptest = mapObject.getJSONArray("map");

            String[][] innerArray = null;

            for(int t = 0; t < mapatest.getCount(); t++){

                innerArray[t] = mapatest.getJSONArray(t);

                for(int k = 0; k < innerArray.getCount(); t++){

                    innerArray[t][k] = mapatest.getString(k);

                }
            }

【问题讨论】:

  • Souloibur,你用什么客户端来获取这个json?
  • 看我的回答,这种方式简单快捷-stackoverflow.com/questions/33720204/…
  • 我正在从我的服务器下载它。
  • 尝试用 Retrofit 来获取它(见上面的链接),你不会解析数组
  • 我不知道怎么用,我从这个开始。

标签: android arrays json


【解决方案1】:

虽然 mapObejct.getJSONArray("map") 返回一个数组,其中每个条目都是表格的 X,但数组的每个项目本身都是一个数组(再次 getJSONArray),并且是表格的 Y。

代码如下:

map = obj.getJSONArray("map);
for(int i = 0; i < map.getCount(); i++){
   innerArray = map.getJSONArray(i);
   for(int k = 0; k < innerArray.getCount(); i++){
      innerItem = map.getString(k);
   }      
}

这将导航到 i,k,它们将是您的数组 [i][k]

编辑:使用您的代码:

 JSONArray mapatest = mapObject.getJSONArray("map");
        String[][] innerArray = null;

        for(int t = 0; t < mapatest.getCount(); t++){
            JSONArray innerArrayObj = mapatest.getJSONArray(t);
            innerArray[t] = new String[innerArrayObj.getCount());

            for(int k = 0; k < innerArrayObj.getCount(); t++){

                innerArray[t][k] = innerArrayObj.getString(k);

            }
        }

【讨论】:

  • 我想我不理解它,我有这个但它不起作用。感谢您的帮助。 (我这里不能贴代码,所以我把它放在问题中。)
  • 哦..错过了,检查答案
  • 是的,它似乎可以工作,但我在 getCount() 中有错误。 “无法解析方法”
  • 我已将“getCount()”更改为“length()”,但现在出现此错误:E/AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to write to null array In这一行:innerArray[t] = new String[innerArrayObj.length()];
  • 必须添加 innerArray = new String[mapatest.getCount()][];在for之前
猜你喜欢
  • 1970-01-01
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
  • 2015-10-15
  • 2017-08-23
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多