我尝试使用此JSON创建对象:
{
"data": {
"Prueba1": {
"id": 266,
"title": "Prueba1",
"name": "Prueba1",
"key": "Prueba1",
"lore": "Prueba1"
},
"Prueba2": {
"id": 111,
"title": "Prueba2",
"name": "Prueba2",
"key": "Prueba2",
"lore": "Prueba2"
}
},
"type": "prueba",
"version": "1.0"
}
问题是Gson正在给我一个对象'数据'但我无法将其转换为一系列物体。
我的实际代码是:
JsonParser parser = new JsonParser();
FileReader fr = new FileReader("route to archive json");
JsonElement datos = parser.parse(fr);
JsonElement heroes = datos.getAsJsonObject().get("data");
final Gson gson = new Gson();
final Type tipoListaEmpleados = new TypeToken<List<hero>>(){}.getType();
final List<hero> hero = gson.fromJson(heroes, tipoListaEmpleados);
System.out.println(hero.get(2));
但它引发了错误:
Expected BEGIN_ARRAY but was BEGIN_OBJECT at path $
对此问题的任何提示都将不胜感激。
P.S:我明白这是给予所有对象的,但我不明白为什么会这样,请帮助!!编辑:我正在使用外部API,这会给我结果,所以我无法更改其余的响应,我需要转换为对象而不添加[]
EDIT2:Hero课看起来像一个POJO:
public class hero
{
public int id;
public String title;
public String name;
public String key;
public String lore;
//constructor getters and setters
}
答案 0 :(得分:1)
您的JSON实际上并没有JSON数组。试试这个......虽然这可能不是你想要的确切结构。
{
"data": [{
"Prueba1": {
"id": 266,
"title": "Prueba1",
"name": "Prueba1",
"key": "Prueba1",
"lore": "Prueba1"
},
"Prueba2": {
"id": 111,
"title": "Prueba2",
"name": "Prueba2",
"key": "Prueba2",
"lore": "Prueba2"
}
}],
"type": "prueba",
"version": "1.0"
}
您可以使用http://www.jsoneditoronline.org/来验证您的JSON并相应调整