десериализация gson в словарь - PullRequest
0 голосов
/ 16 февраля 2012

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 ;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...