当前位置:   article > 正文

SnakeYAML序列化时去掉!!类路径信息_snakeyaml输出文件有三个杠杠怎么去掉

snakeyaml输出文件有三个杠杠怎么去掉

        将一个对象生成yaml文件时,如何去掉自定义对象后面自带的!! 类路径信息,是此次分享的内容,举例以下内容。

1.首先定义一个yaml类,用来配置类信息等内容(核心配置)
  1. private static Yaml getYamlRepresenter(){
  2. Constructor constructor = new Constructor(User.class);//主类对象
  3. TypeDescription carDescription = new TypeDescription(User.class);
  4. carDescription.putListPropertyType("Address", Address.class); //属性类对象
  5. carDescription.putListPropertyType("Model", Model.class); //属性类对象
  6. constructor.addTypeDescription(carDescription);
  7. Representer representer = new Representer();
  8. // 好像是设置空属性填充
  9. //representer.getPropertyUtils().setSkipMissingProperties(true);
  10. //会使用 User 对map的类型进行解析,不会生成!!和包路径
  11. representer.addClassTag(User.class, Tag.MAP); //配合上面使用,将map值解析为对应的类
  12. representer.addClassTag(Address.class, Tag.MAP);
  13. representer.addClassTag(Model.class, Tag.MAP);
  14. final DumperOptions options = new DumperOptions();
  15. options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); //块状格式
  16. options.setExplicitStart(false);
  17. options.setIndicatorIndent(2);
  18. options.setSplitLines(true);
  19. options.setIndent(4);
  20. Yaml yaml = new Yaml(constructor,representer,options);
  21. return yaml;
  22. }
2.构造主要的dump方法(根据需要可选其他方法,这里使用dump)
  1. public static void dumpFileRepresenter(File file, Map data) throws IOException {
  2. OutputStreamWriter writer = new FileWriter(file);
  3. getYamlRepresenter().dump(data, writer);
  4. }
3.创建具体的yaml文件方法
  1. /**
  2. * 创建yaml的配置文件
  3. * @param filePath 路径
  4. * @param fileName 文件名
  5. * @param mapData 生成yaml的数据
  6. * @throws IOException
  7. */
  8. public File makeYamlFileGetPath(String filePath, String fileName, Map<String,Object> mapData) throws IOException {
  9. File file = new File(filePath, fileName);
  10. FileUtils.forceMkdir(file.getParentFile());
  11. YamlUtil.dumpFileRepresenter(file,mapData);
  12. logger.info("yaml dump path {}",file.getAbsolutePath()); //打印了一下本地文件生成的地址信息
  13. return file;
  14. }
4.简单列出主类信息作参考
  1. public class User {
  2. private String name;
  3. private Address address;
  4. private List<Model> mode;
  5. private Integer age;
  6. }
5.生成文件展示
  1. address:
  2. enabled: false
  3. address_config: address.yaml
  4. name: test01
  5. age: 66
  6. model:
  7. framework: tensorflow
  8. input_features:
  9. - pclass
  10. - plib
  11. - pnum
  12. model_config: model.conf

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号