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"
}
}
]
}
如果你看到“roles_map”,“导演”和& 'Star'就像键,可以将对象数组作为值。 由于键可能很多,我不能把类命名为Director / Star等。 我知道我应该使用Custom Deserializer,但不知道具体如何。 这个answer显示了什么可行,但我无法使其发挥作用。
更新: 如果我做简单的gson.fromJson(str,RootObject)它会工作。但由于Director / Star是角色,因此数据而不是类。而且可能会有更多的角色。所以我需要把这些角色放到字典而不是类中。
工作班:
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 ;
}