Работа со случайным ключом JSON с использованием Gson - PullRequest
0 голосов
/ 19 февраля 2019

Мой json:

{
    random1:{ 
      randomKey1:{
          "id":"a", 
          "name":"jack"
      }, 
      randomKey2:{
          "id":"b", 
          "name":"alice"
      }
    },
    random2:{
       randomKey1:{
          "id":"c", 
          "name":"paul"
      }
    }
}

Каждый из моих объектов json также содержит объекты.

Я использую Gson для десериализации.Но не мой ожидаемый результат.

Я надеюсь десериализовать его вывод Map<String, Map<String, Any>>

Я использую JsonDeserializer для реализации.Но есть проблема, когда for loop.

for ((key, element) in jsonObject.entrySet()) {
   for ((key2, element2) in element.asJsonObject.entrySet()) {
      result2[key2] = element2
   }
   result[key] = result2
}

Выход всегда

{random1={randomKey1={value}, randomKey2={value}, randomKey3={value}}, random2={randomKey1={value}}}

Ожидаемый результат

{random1={randomKey1={value}, randomKey2={value}}, random2={randomKey1={value}}}

1 Ответ

0 голосов
/ 19 февраля 2019

Это hashmap типа объекта, который повторяется один за другим все ключи, поэтому он берет динамические ключи из JSON:

Gson gson = new Gson();
Type mapType = new TypeToken<Map<String,Map<String, String>>>() {}.getType();
Map<String,Map<String, String>> map = gson.fromJson(new FileReader("Put YOur JSOn Here "), mapType);

// show value

for (Map.Entry<String,String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
// do stuff
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...