2015-02-03 3 views
0

Давайте предположим, что у нас есть объект JSON как это:Json deserialize object to list - это реально?

{ 
"employees" : { 
     "Mike" : 23, 
     "Bill" : 42, 
     "Jimmy" : 30 
    } 
} 

И следующие классы:

public class Employees { 

    private List<Employee> employees; 
} 


public class Employee { 

    private String name; 
    private int age; 
} 

Есть ли у нас какие-то способы десериализации JSON в объект типа сотрудников?

+2

возможно дубликат [Google Gson - список Deserialize объект? (общий тип)] (http://stackoverflow.com/questions/5554217/google-gson-deserialize-listclass-object-generic-type) – vidstige

+0

См. этот учебник: http://www.mkyong.com/java/ how-do-convert-java-object-to-from-json-format-gson-api/ Кроме того, «сотрудники» вашего JSON должны быть массивом объектов. –

ответ

1

Список может использоваться для десериализации массива элементов [...], но {...} - объект. Если вы хотите, вы можете рассмотреть возможность использования Map вместо List

class Data { 
    Map<String,String> employees; 
} 

... 
Gson gson = new Gson(); 
Data data = gson.fromJson(json, Data.class); 
for (Map.Entry<String, String> emp: data.employees.entrySet()) 
    System.out.println(emp.getKey()+" -> "+emp.getValue()); 

Выход:

Mike -> 23 
Bill -> 42 
Jimmy -> 30 

Если вы хотите, чтобы разобрать ваш JSON, используя эти классы

public class Employees { 
    private List<Employee> employees; 
} 


public class Employee { 
    private String name; 
    private int age; 
} 

Ваши данные должен выглядеть так:

{ 
    "employees" : [ 
     {"name":"Mike", "age": 23}, 
     {"name":"Bill", "age": 42}, 
     {"name":"Jimmy", "age": 30} 
    ] 
} 
+0

Да, вы правы, я знаю о правильном json, но я надеялся, что смогу решить эту проблему и связать этот json с этим классом. Спасибо за помощь. –