java解析yaml而不为每个参数创建变量

hof1towb  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(363)

我还是个编程新手,我真的希望有人能帮我。我想从yaml文件创建一个Map。问题是,我想让它可选的参数配置,所以我不想创建一个类,其中所有可能的参数都作为变量创建。我以前使用过snakeyaml,但据我所知,这不是snakeyaml的一个选项。
我的yaml文件的示例如下所示:

  1. description: linter for microservices
  2. meta:
  3. pciScope: false
  4. image:
  5. name: helmcube
  6. tag: 2.5.4
  7. service:
  8. type: 45
  9. deployment:
  10. replicaCount: 2

你们有谁知道这是怎么实现的吗?我已经找了好几个小时了,找不到任何与这个问题有关的东西。我希望任何人都能帮忙
当做
玛丽

kuarbcqp

kuarbcqp1#

获得一个properties示例就足够了吗?而不是用定义的变量创建自己的类。
如果你用Spring,

  1. public class YamlPropertySourceFactory implements PropertySourceFactory {
  2. @Override
  3. public PropertySource<?> createPropertySource(String name, EncodedResource encodedResource)
  4. throws IOException {
  5. YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
  6. factory.setResources(encodedResource.getResource());
  7. Properties properties = factory.getObject();
  8. return new PropertiesPropertySource(encodedResource.getResource().getFilename(), properties);
  9. }
  10. }

https://www.baeldung.com/spring-yaml-propertysource
在springbootweb项目中加载yaml文件(不是环境配置文件)的最佳方式是什么?
---编辑---
现在您有了一个属性,您可以从中获得hashmap:
使用外用Guava,

  1. com.google.common.collect.Maps.fromProperties(Properties)

或者java方式:

  1. Map properties = new Properties();
  2. HashMap<String, String> map = new HashMap<String, String>(properties);

此stackoverflow演示如何将属性转换为hashmap:
将java.util.properties转换为hashmap<string,string>
一旦有了配置(字符串)的hasamap,就可以与另一个配置(字符串)的hasamap进行比较
如果这对你没有帮助,请更新你的问题与明确的激励/你试图实现的例子。

展开查看全部

相关问题