2016-10-17 3 views
0

Я пытаюсь создавать объекты с этим JSON:Json к объектам Java (Gson)

{ 
"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 дает мне объект «данных», но я не могу не CONVER его к массиву объектов.

Мой фактический код:

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: Я понимаю, что это дает все объекты, но я не понимаю, почему это происходит, пожалуйста, помогите!

EDIT: Я работаю с внешним 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

Это объект с объектами, это невозможно! –

+0

Внешний элемент в вашем примере JSON - это объект с '{}'. Но вы пытаетесь десериализовать «Список », который ожидает, что внешний элемент будет массивом с '[]'. Вот почему вы получаете сообщение об ошибке. – nickb

ответ

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 и настроить соответственно

+0

Я пробовал с этим JSON, но все еще не работал с кодом, который я разместил в вопросе = D –

+0

@JotaGe вам, вероятно, придется использовать эту строку тоже, а не 'JsonElement heroes = datos.getAsJsonArray(). get ("data"); ' –

+0

Да, у меня есть эта строка –

Смежные вопросы