Json到Java中的对象(Gson)

时间:2016-10-17 13:55:10

标签: java json gson

我尝试使用此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
}

1 个答案:

答案 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并相应调整