2

我正在使用来自 gson 的 JsonReader 来解析 JSON,我的 JSON 解析适用于除此之外的所有值:

  "tags": [
        "String1",
        "String2",
        "String3",
        "String4"
    ],

这是解析的代码

 if(key.equals("tags")) {
 try {
        in.beginArray();

        List<String> tags = new ArrayList();

        while (in.hasNext()) {

            String value = in.nextString();
            tags.add(value);
        }

        item.setTags(tags);
        in.endArray();

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

in是 JsonReader 对象,item是我存储结果的对象。

我不明白为什么,但是当这条线完成时in.beginArray();in.hasNext()有时只有一次正确,有时根本不正确。所以我只得到列表的第一项或什么都没有。

数组的格式是否正确?如果我使用 JSONLint 验证所有 JSON,他说 JSON 是正确的

4

1 回答 1

0

你可以试试下面的代码:

String jsonArrayString = obj.getJSONArray("tags").toString();
                        Gson googleJson = new Gson();
                        List tag = googleJson.fromJson(jsonArrayString, ArrayList.class);

                        System.out.println(tag);
                        item.setTags(tag);
于 2018-03-19T10:50:39.847 回答