Java Json对象另存为字符串而不是对象

Java Json对象另存为字符串而不是对象,java,json,oop,gson,Java,Json,Oop,Gson,我正在使用Json/Gson保存和加载一个hashmap 当我用key String和Value enum元素保存hashmap属性时。例如: private static enum Rank { BOSS; } public static void main(String[] args){ HashMap<Object, Object> attributes = new HashMap<>(); attributes.put("test",

我正在使用Json/Gson保存和加载一个hashmap

当我用key String和Value enum元素保存hashmap属性时。例如:

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...


}
然后,加载的映射已将Rank.BOSS的枚举元素更改为字符串“BOSS”

现在的结果是:

 "attributes": {
    "test": "BOSS",
 },
它现在是一根弦

我如何克服这个问题


我希望它再次作为enum元素而不是字符串表示加载

尝试使用Gson
TypeAdapterFactory

如果您需要比从JSON本身推断出的更强的类型,您必须告诉您的JSON库。最简单的方法是使用适当的bean类,而不是
Map
。否则它怎么知道键“test”应该包含这个Enum呢?@Thilo的概念很好,我建议这样做。
 "attributes": {
    "test": "BOSS",
 },