使用Gson处理随机JSON密钥

时间:2019-02-19 09:55:54

标签: android json kotlin gson

我的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循环时会出现问题。

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 :(得分:0)

这是一个对象类型的哈希映射,它按一个全键进行迭代,因此它从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);

//显示值

for (Map.Entry<String,String> entry : map.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
// do stuff
}