Java GSON嵌套hashmap反序列化是平面Map的(重复键)

8xiog9wr  于 2022-11-06  发布在  Java
关注(0)|答案(1)|浏览(177)

我有一个像这样的json

{
  "NAME": {
    "keyClass": {
      "key1": 1,
      "key2": 2
    },
   "keyClass2": {
      "key1": 6
    }
  }
}

我的java看起来像这样

@Expose
    protected Map<String, Map<String, Integer>> data = new LinkedHashMap<>();

其中每个Map<String,Integer>都是一个new LinkedHashMap<>(),然后我用GSON.toJson(this,File)将其串行化,它会给予我一个很棒json,当我尝试将其反串行化为GSON.fromJson(File,this)时,问题出现了,它会试图Map所有内容,除了它有一个平面Map,并不关心嵌套,因此认为keyClass.key1和keyClass2.key1冲突。它抛出了一个巨大的重复键:null。是否存在某种类型的对象,以便嵌套的LinkedHashMap序列化为它自己的,并且在反序列化时不是flatmap?

vmdwslir

vmdwslir1#

实际上我忘了告诉你一些事情,我使用了一个枚举,它Map到一个字符串,这就是为什么,这里有两个例子,为什么它在第一个上失败:https://gist.github.com/hube12/b86e8257e89ed4220f03f9a527175fca

相关问题