如何使用gson解析JSON数组?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我有这样的JSON文件:

[{ "number" : "3",
    "title" : "hello_world",

  },
  { "number" : "2",
    "title" : "hello_world",

  }]

在文件有一个根元素之前,我会使用:

Wrapper w = gson.fromJson(JSONSTRING, Wrapper.class);

代码,但我想不出如何编写Wrapper类的根元素是一个数组。

我曾尝试使用:

Wrapper[] wrapper = gson.fromJson(jsonLine, Wrapper[].class);

有:

public class Wrapper{

    String number;
    String title;

}

但没有任何运气。我怎么才能使用这种方法读取这个?

这个工作使用:

JsonArray entries = (JsonArray) new JsonParser().parse(jsonLine);
String title = ((JsonObject)entries.get(0)).get("title");

但我宁愿知道如何使用这两种方法(如果可能)。

提问于
用户回答回答于

问题是由数组的最后一个元素之后的逗号引起的(每个元素之后title)。如果您删除它并将数据更改为

[{ "number" : "3",
  "title" : "hello_world"  
},
{ "number" : "2",
  "title" : "hello_world"  
}]

Wrapper[] data = gson.fromJson(jElement, Wrapper[].class); 将正常工作。

用户回答回答于
Gson gson = new Gson();
Wrapper[] arr = gson.fromJson(str, Wrapper[].class);

class Wrapper{
    int number;
    String title;       
}

似乎工作正常。但是,你的字符串中有一个额外的逗号。

[
    { 
        "number" : "3",
        "title" : "hello_world"
    },
    { 
        "number" : "2",
        "title" : "hello_world"
    }
]

扫码关注云+社区