【问题标题】:How to process a multidimensional json into 3 arrays如何将多维json处理成3个数组
【发布时间】:2016-07-07 02:08:13
【问题描述】:

我有一个这样的 JSON 结果:

jArr:
[
  ["53","54","55","62","63","64"],
  ["1133 Budapest Dráva utca 10.","1106 Budapest Örs vezér tere 25.","1106 Budapest Örs vezér tere 25.","1106 Budapest Örs vezér tere 25.","1133 Budapest Dráva utca 10.","1106 Budapest Örs vezér tere 25."],
  [
    ["2016-08-18","15:00:00"],
    ["2016-04-08","13:00:00"],
    ["2016-04-08","14:00:00"],
    ["2016-04-08","10:00:00"],
    ["2016-04-08","13:00:00"],
    ["2016-04-08","15:00:00"]
  ]
]

我想在 java 中将它处理成 3 个数组。 我想要第一个 [](如 53、54...)到 int[] id。 第二个[]String[] 数组中,第三个也是一个字符串。 3个数组大小相同,但JSON结果可大可小。

java:

try {
    post.setEntity(new UrlEncodedFormEntity(dataToSend));
    HttpResponse httpResponse = client.execute(post);
    HttpEntity entity = httpResponse.getEntity();
    String result = EntityUtils.toString(entity);
    JSONArray jArr = new JSONArray(result);
    int size = 30;
    String[] dates = new String[size];
    String[] places = new String[size];
    int[] ids = new int[size];
    if (jArr.length() != 0) {
        for (int i = 0; i < jArr.length(); i++){
            //I think it should be processed here
            ids[i] = jArr[0][i].getInt(i); //or something like that, but it doesn't work
            places[i] = jArr[1][i].getSting();    
            dates[i] = jArr[2][i].getSting();    
        }
    }

我应该如何将 JSON 处理成这些数组?

【问题讨论】:

    标签: java arrays json multidimensional-array


    【解决方案1】:

    JSONArray.filters.getJSONArray() 将返回一个 JSONArray

    例子:

    JSONArray jArr = new JSONArray(result);
    JSONArray j1 =  jArr.getJSONArray(0);   // 0th index. 
    

    这是您的代码的简化答案:

    public class TestJSON {
    
        public static void main(String[] args) throws JSONException {
            String result = "[\n"
                    + "  [\"53\",\"54\",\"55\",\"62\",\"63\",\"64\"],\n"
                    + "  [\"1133 Budapest Dráva utca 10.\",\"1106 Budapest Örs vezér tere 25.\",\"1106 Budapest Örs vezér tere 25.\",\"1106 Budapest Örs vezér tere 25.\",\"1133 Budapest Dráva utca 10.\",\"1106 Budapest Örs vezér tere 25.\"],\n"
                    + "  [\n"
                    + "    [\"2016-08-18\",\"15:00:00\"],\n"
                    + "    [\"2016-04-08\",\"13:00:00\"],\n"
                    + "    [\"2016-04-08\",\"14:00:00\"],\n"
                    + "    [\"2016-04-08\",\"10:00:00\"],\n"
                    + "    [\"2016-04-08\",\"13:00:00\"],\n"
                    + "    [\"2016-04-08\",\"15:00:00\"]\n"
                    + "  ]\n"
                    + "]";
            JSONArray jArr = new JSONArray(result);
            if (jArr.length() != 0) {
                List ids = fillArray(jArr.getJSONArray(0));
                List places = fillArray(jArr.getJSONArray(1));
                List dates = fillArray(jArr.getJSONArray(2));
                System.out.println(ids);
                System.out.println(places);
                System.out.println(dates);
            }
        }
    
        private static List fillArray(JSONArray jsonArray) throws JSONException {
            List array = new ArrayList();
            for (int i = 0; i < jsonArray.length(); i++) {
                array.add(jsonArray.get(i));
            }
            return array;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-05-23
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      相关资源
      最近更新 更多