Json String:
{
"results": [
{
"person": {
"age": 38,
"name": "Ed Helms",
"roles_map": {
"Director": [
{
"id": 336,
"title": "The Office",
"type": "tv"
}
],
"Star": [
{
"id": 336,
"title": "The Office",
"type": "tv"
},
{
"id": 336,
"title": "The Office",
"type": "tv"
}
]
},
"text": "ed-harris"
}
}
]
}
Если вы видите «role_map», «Director» и «Star» похожи на ключи, которые могут иметь массив объектов в качестве значений.
Поскольку ключей может быть много, я не могу сделать класс с именем Director / Star и т. Д.
Я знаю, что должен использовать Custom Deserializer, но не знаю точно, как.
Этот ответ показывает, что может работать, но я не мог заставить его работать.
Обновление:
Если я сделаю простой gson.fromJson (str, RootObject), он будет работать. Но поскольку директор / звезда - это роли, то это данные, а не класс. И может быть много других ролей. Поэтому мне нужен способ поместить эти роли в словарь, а не в классы.
Рабочие классы:
class Director
{
public int id ;
public String title ;
public String type ;
}
class Star
{
public int id ;
public String title ;
public String type ;
}
class RolesMap
{
public List<Director> Director ;
public List<Star> Star ;
}
class Person
{
public int age ;
public String name ;
public RolesMap roles_map ;
public String text ;
}
class Result
{
public Person person ;
}
class RootObject
{
public List<Result> results ;
}
Ожидаемые классы:
class Show
{
public int id ;
public String title ;
public String type ;
}
class Person
{
public int age ;
public String name ;
public HashMap<String, Show[]> RolesMap;
public String text ;
}
class Result
{
public Person person ;
}
class RootObject
{
public Result[] results ;
}