使用Gson在无密钥JSONArray中解析JSONArray

时间:2017-11-14 11:20:20

标签: java android json gson

我刚刚开始做android开发,我想出了一个看起来像这样的json,

"rows": [

    [ 
        { "val": "abc", 
          "val1":"cde" 
        },

        { "val": "efg", 
          "val1":"hij" 
        },
    ],

    [ 
        { "val": "klm", 
          "val1":"nop" 
        },

        { "val": "qrs", 
          "val1":"tuv" 
        },
    ],
    ........
    ........
    ........
]

现在您可以看到外部数组没有键,但内部数组没有键。我正在使用Gson来解析json。我应该如何为这个json创建一个模型类?任何帮助,将不胜感激!!

1 个答案:

答案 0 :(得分:0)

首先,此JSON字符串看起来无效。在每个双元素内部数组的第二个元素之后不应该是逗号。并将整个事物包裹在{}括号中。像这样:

{"rows": [
    [ 
        { "val": "abc", 
          "val1":"cde" 
        },
        { "val": "efg", 
          "val1":"hij" 
        }
    ],
    [ 
        { "val": "klm", 
          "val1":"nop" 
        },
        { "val": "qrs", 
          "val1":"tuv" 
        }
    ]
]}

如果你纠正了这些,你可以用GSON解析它:

    JsonElement root = new JsonParser().parse(jstring);
    root.getAsJsonObject().get("rows")
        .getAsJsonArray().forEach(innerArray -> {
            innerArray.getAsJsonArray().forEach(element -> {
                System.out.println("val equals "+element.getAsJsonObject().get("val"));
                System.out.println("val1 equals "+element.getAsJsonObject().get("val1"));
            });
    });

显然,您可以使用这些已解析的值执行任何操作,而不是打印。