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

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

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

description: linter for microservices
meta:
  pciScope: false
image:
  name: helmcube
  tag: 2.5.4 
service:
  type: 45
deployment:
  replicaCount: 2

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

kuarbcqp

kuarbcqp1#

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

public class YamlPropertySourceFactory implements PropertySourceFactory {

    @Override
    public PropertySource<?> createPropertySource(String name, EncodedResource encodedResource) 
      throws IOException {
        YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
        factory.setResources(encodedResource.getResource());

        Properties properties = factory.getObject();

        return new PropertiesPropertySource(encodedResource.getResource().getFilename(), properties);
    }
}

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

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

或者java方式:

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

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

相关问题