用Gson解析JSON。没有键的困难JSON结构

时间:2014-02-03 20:23:58

标签: java android json gson

如何为以下结构创建正确的对象?

没有任何键的JSON和数组中数组中的数组:

   {
    "1": [
          [
             [1.111, 2.222]
             [1.111, 2.222]
             ...
          ],
          [
             [1.111, 2.222]
             ...
          ]
       ],
    "2": [
          [
             [1.111, 2.222]
             ...
          ],
          [
             [1.111, 2.222]
             ...
          ]
       ],
    ...
    }

2 个答案:

答案 0 :(得分:2)

我不会给你代码解决方案,但我会解释你的格式。详细解释了JSON格式here

你有

{
"1": [
      [
         [1.111, 2.222]
         [1.111, 2.222]
         ...
      ],
      [
         [1.111, 2.222]
         ...
      ]
   ],...

您的根元素是JSON对象。它包含许多对。每对("1": ...)都有一个JSON数组[...]的值。这些JSON数组中的每一个都包含JSON数组[...]的元素。这些JSON数组最终包含JSON数字原语[12.34]的元素。

所以你的JSON有以下级别(括号之间的数字是概念嵌套级别)

Object (0)
   name -> Array (1) of Arrays (2)
            -> Array (2) of Arrays (3)
                -> Array (3) of number primitives

这可以映射到Map<String, List<List<List<Double>>>>,因为你有三个嵌套的数组级别。

如果你有一个自定义类,那也可以工作,但是很难映射根对名称,因为你在Java类中没有动态字段名称。这就是我建议Map以上的原因。

或者,您可以将JSON解析为com.google.gson.JsonObject并遍历对象结构以获取所需的元素。

答案 1 :(得分:0)

我有类似的问题,但是我有一些不同的JSON,并且我无法在Map中使用您的解决方案。示例(地图>)。

我的JSON结构:

{
   "2019-05-26": {
        "lastUpdate": "2019-05-26 06:05:02",
        "routes":[
            {
              "routeId": 107,
              "agencyId": 18
            },
            {
              "routeId": 222,
              "agencyId": 22
            }
       ]
    },
"2019-05-27": {
        "lastUpdate": "2019-05-27 06:05:02",
        "routes":[
            {
              "routeId": 33,
              "agencyId": 14
            },
            {
              "routeId": 345,
              "agencyId": 2232
            }
       ]
    }
}

如何使用此JSON?我想将其解析为我的POJO。