【问题标题】:How to exclude class from YAML file?如何从 YAML 文件中排除类?
【发布时间】:2015-02-02 18:20:51
【问题描述】:

我使用 SnakeYAML 将数据持久化到 YAML 文件中。

DumperOptions options = new DumperOptions();
options.setPrettyFlow(true);
options.setAllowReadOnlyProperties(true);
Yaml yml = new Yaml(options);

FileWriter writer = new FileWriter(path);
yml.dump(object, writer);
writer.flush();
writer.close();

当我尝试保存结果时,我得到这样的内容

!!com.test.yml.User
users:
- {
  name: Bob,
  age: 14
}
- {
  name: John,
  age: 15
}

如何避免文件中的 !!com.test.yml.User 类?

我也不想保存空实体。比如

- {
    name: null,
    age: 14
  }

应该是

- {
    age: 14
  }

【问题讨论】:

    标签: java snakeyaml


    【解决方案1】:
    Representer representer = new Representer();
    representer.addClassTag(com.test.yml.User.class, Tag.MAP);
    Yaml yaml = new Yaml(representer);
    

    这段代码说 - 请为自定义类用户使用 Tag.MAP。由于 MAP 标签是隐式的,标签将一起消失。但是要将其解析回来,您必须指示 SnakeYAML 如何将数据解析为 User 实例。

    【讨论】:

    • 代码示例在附带一些解释时通常会更加有用。
    • 代码说 - 请使用 Tag.MAP 作为自定义类用户。由于 MAP 标签是隐式的,标签将一起消失。但是要将其解析回来,您必须指示 SnakeYAML 如何将数据解析为 User 实例。
    • Yaml构造函数如何设置DumperOptions(配置格式)和Representer(去掉class标签)?
    猜你喜欢
    • 2021-08-31
    • 2015-03-29
    • 2020-04-12
    • 2018-07-21
    • 2019-06-05
    • 2020-10-15
    • 2015-09-13
    • 2017-03-22
    • 2017-01-16
    相关资源
    最近更新 更多