【问题标题】:Json objects saving as String rather than ObjectJson 对象保存为 String 而不是 Object
【发布时间】: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&lt;Object, Object&gt;。它应该怎么知道关键的“测试”应该包含这个枚举?
  • @Thilo 概念很好,我推荐。

标签: java json oop gson


【解决方案1】:

尝试使用Gson TypeAdapterFactory here

【讨论】:

    猜你喜欢
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多