【发布时间】:2018-08-14 00:57:33
【问题描述】:
我正在使用 Json/Gson 保存和加载哈希图。
当我使用键 String 和 Value EnumElement 保存哈希图属性时。例如:
private static enum Rank {
BOSS;
}
public static void main(String[] args){
HashMap<Object, Object> attributes = new HashMap<>();
attributes.put("test", Rank.BOSS);
//save json file here...
}
然后在用json加载hashmap时,像这样设置地图:
attributes = loadJson("path/savedAttributes");
那么加载的地图已经把Rank.BOSS的枚举元素改成了String“BOSS”
现在的结果是:
"attributes": {
"test": "BOSS",
},
它现在是一个字符串。
我该如何克服这个问题?
我希望它再次加载为枚举元素而不是字符串表示
【问题讨论】:
-
如果你需要比从 JSON 本身推断出的更强的类型,你必须告诉你的 JSON 库。最简单的方法是使用适当的 bean 类而不是
Map<Object, Object>。它应该怎么知道关键的“测试”应该包含这个枚举? -
@Thilo 概念很好,我推荐。