【问题标题】:How to parse a 2D json array如何解析二维 json 数组
【发布时间】:2020-01-14 22:52:58
【问题描述】:

您好,我是 android studio 的新手,目前正在尝试弄清楚如何将这个 json 文件:http://stman1.cs.unh.edu:6191/games 解析为二维数组。我似乎想不出一个简单的方法来做到这一点。

我不确定 JsonObject 返回对象类型的确切原因。我知道它无法转换为 int,因为它可能是一个 int 数组,但我也无法获取该数组,因为它没有像外部数组那样的名称。

public void onResponse(JSONObject response) {
   try {
      JSONArray jsonArray = response.getJSONArray("grid");

      for( int i=0; i < jsonArray.length(); i++ ){
          JSONObject num = jsonArray.getJSONObject(i);
          gridVals[i] = num.getInt();
      }

   } catch (JSONException e) {
      e.printStackTrace();
   }
}

【问题讨论】:

标签: java arrays json android-studio


【解决方案1】:

这是一个简单的例子,如果你使用 Gson 库,你可以直接使用。

class Response{

    List<List<Integer>> grid= new ArrayList<>();
}

public class ParsingJson {

    public static void main(String[] args) {
        // data is your json string that you need to provide here 
        Response response = (new Gson()).fromJson(data, Response.class);

        System.out.println(response.grid.size());

        for (List<Integer> integers : response.grid) {
            for (Integer integer : integers) {
                System.out.println(integer);
            }
        }

    }

}

我已尝试使用 Gson library 读取您的 json 数据

【讨论】:

    【解决方案2】:

    二维数组需要两个 for 循环

    for (int i = 0; i < jsonArray.length(); i++) {
        JSONArray internaljsonArray = jsonArray.getJSONArray(i);
        for (int j = 0; j < internaljsonArray.length(); j++) {
    
            JSONObject num = internaljsonArray.getJSONObject(j);
            gridVals[i][j] = Integer.getInteger(num.toString());
        }
    }
    

    并且gridVals 至少应该声明为

    Integer gridVals[][]=new Integer[100][100];
    

    【讨论】:

      猜你喜欢
      • 2011-01-30
      • 1970-01-01
      • 2014-08-02
      • 2014-02-08
      • 2020-01-26
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      相关资源
      最近更新 更多