JsonReader没有正确解析String Array

时间:2018-03-19 10:14:40

标签: android json gson jsonreader

我正在使用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是正确的

1 个答案:

答案 0 :(得分: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);