JsonReader 无法正确解析字符串数组

Posted

技术标签:

【中文标题】JsonReader 无法正确解析字符串数组【英文标题】:JsonReader don't parse correctly String Array 【发布时间】:2018-03-19 10:14:40 【问题描述】:

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

【问题讨论】:

我认为你的 json 应该是这样的:"tags": [ "String1", "String2", "String3", "String4" ] 【参考方案1】:

你可以试试下面的代码:

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

                        System.out.println(tag);
                        item.setTags(tag);

【讨论】:

以上是关于JsonReader 无法正确解析字符串数组的主要内容,如果未能解决你的问题,请参考以下文章

使用 JsonReader 解析时 JsonArray 或 JsonObject 为空

使用 JsonReader 类 Android 解析 Json

JsonReader - 读取数组抛出预期名称但为 NULL

无法填充结构数组

json 解析不正确

尝试使用 swiftyJSON 快速解析 JSON