java - 使用 gson 反序列化 EnumMap

标签 java dictionary enums gson

我有一个格式如下所示的 json 字符串,我正在尝试使用 gson 对其进行反序列化

{
  "MAPS": [
    {
      "value": true,
      "enabled": [
        {
          "isoCountryCode": "USA"
        }
      ]
    }
  ]
}

下面是我的类和枚举的结构

public class Configuration {
  private Map<EnumType, List<Object>> enumToObjectMap;
}

   public enum EnumType {
     MAPS;
}

当我尝试使用

反序列化它时
new Gson().fromJson(jsonString, Configuration.class)

我得到 enumToObjectMap 的空值。请帮助我解决同样的问题。

最佳答案

可能有一个更正确的解决方案,但这里有一些解决方法:

  1. 将 JSON 字符串包装在父字段中:

    jsonString = "{\"enumToObjectMap\":" + jsonString + "}";
    Configuration c = new Gson().fromJson(jsonString, Configuration.class);
    
  2. 独立反序列化映射并通过构造函数或 setter 将其传递到您的类中:

    Configuration c = new Configuration();
    c.setMap(new Gson().fromJson(jsonString,
            new TypeToken<EnumMap<EnumType, List<Object>>>() {}.getType()));
    

关于java - 使用 gson 反序列化 EnumMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43330860/

相关文章:

Java:如何命名 boolean 属性

python - 如果字典在列表中,如何将它们的值从字符串更改为 int

java - Dictionary Api For Java(用于查找单词的含义)

java - Enum无法解析? java

我可以用 printf() 显示枚举的值吗?

java - 在一个简单的Spring+Hibernate应用程序中,如何解析 "Unrecognized listener type"?

java - 从unity发送数据到java android

java - Hibernate - 当在另一个类中进行自引用时处理添加(插入)

Swift 递归枚举

java - 需要使用 Java 集合映射值的建议。请建议