关键词:
【中文标题】Java 和 YAML:如何解析多个 yaml 文档并将它们合并为单个 YAML 表示?【英文标题】:Java and YAML: how to parse multiple yaml documents and merge them to a single YAML representation? 【发布时间】:2014-12-08 07:47:01 【问题描述】:假设我有一个文件,defaults.yaml
:
pool:
idleConnectionTestPeriodSeconds: 30
idleMaxAgeInMinutes: 60
partitionCount: 4
acquireIncrement: 5
username: dev
password: dev_password
还有另一个文件,production.yaml
:
pool:
username: prod
password: prod_password
在运行时,我如何读取这两个文件并将它们合并为一个,以便应用程序“看到”以下内容?
pool:
idleConnectionTestPeriodSeconds: 30
idleMaxAgeInMinutes: 60
partitionCount: 4
acquireIncrement: 5
username: prod
password: prod_password
这可以通过 SnakeYAML 实现吗?还有其他工具吗?
我知道一种选择是将多个文件作为 Maps 读取,然后自己合并它们,将合并呈现为单个临时文件,然后读取它,但这是一个重量级的解决方案。现有工具可以做到这一点吗?
【问题讨论】:
我认为现有的工具不会做任何比你想做的更“重量级”的事情——不过,另一种选择是跳过临时文件,只在内存中合并地图。 【参考方案1】:您可以使用 Jackson,关键是使用 ObjectMapper.readerForUpdating() 并使用 @JsonMerge 注释字段(否则下一个对象中所有缺少的字段将覆盖旧的):
马文:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>2.9.9</version>
</dependency>
代码:
public class TestJackson
public static void main(String[] args) throws IOException
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
MyConfig myConfig = new MyConfig();
ObjectReader objectReader = mapper.readerForUpdating(myConfig);
objectReader.readValue(new File("misc/a.yaml"));
objectReader.readValue(new File("misc/b.yaml"));
System.out.println(myConfig);
@Data
public static class MyConfig
@JsonMerge
private Pool pool;
@Data
public static class Pool
private Integer idleConnectionTestPeriodSeconds;
private Integer idleMaxAgeInMinutes;
private Integer partitionCount;
private Integer acquireIncrement;
private String username;
private String password;
【讨论】:
终于!五年后的答案!!! :) 它仍然受到赞赏 - 答案被授予。谢谢!在 Java 中解析 YAML 前端
...我无法理解它(我不太了解红宝石)。所以我的问题是,如何在java中解析YAMLFrontMatter?我的类路径中有snakeyaml,我将从降价文件中解析YAM 查看详情
如何将 yaml 文件解析为 ruby 哈希和/或数组?
】如何将yaml文件解析为ruby哈希和/或数组?【英文标题】:Howtoparseayamlfileintorubyhashsand/orarrays?【发布时间】:2011-03-2917:47:13【问题描述】:我需要将yaml文件加载到哈希中,我该怎么办?【问题讨论】:请更新您选择的答案... 查看详情
如何使用 yaml-cpp 发出和解析原始二进制数据
】如何使用yaml-cpp发出和解析原始二进制数据【英文标题】:How-toemitandparserawbinarydatausingyaml-cpp【发布时间】:2010-10-2819:13:23【问题描述】:是否可以发出和读取(解析)二进制数据(图像、文件等)?像这样显示在这里:http://y... 查看详情
多个 Spring 配置文件的属性解析(yaml 配置)
】多个Spring配置文件的属性解析(yaml配置)【英文标题】:PropertyresolvingformultipleSpringprofiles(yamlconfiguration)【发布时间】:2020-06-0513:16:33【问题描述】:当多个配置文件用于属性解析时是否有定义的顺序。我有yaml配置文件:name:n... 查看详情
如何从使用 python 解析的 yaml 文件中调用和迭代值?
】如何从使用python解析的yaml文件中调用和迭代值?【英文标题】:Howtocallanditeratevaluesfromayamlfileparsedusingpython?【发布时间】:2018-10-0717:08:52【问题描述】:我有一个yaml文件如下:server1:host:os1ip:##.###.#.##path:/var/log/syslogfile:syslogiden... 查看详情
如何在不知道终端标量的映射和类型中的键的情况下使用 yaml-cpp 库解析任意 yaml 文件?
】如何在不知道终端标量的映射和类型中的键的情况下使用yaml-cpp库解析任意yaml文件?【英文标题】:Howtoparsearbitraryyamlfilewithyaml-cpplibrarywithoutknowingkeysinmappingsandtypesoftheterminalscalars?【发布时间】:2020-03-0412:31:03【问题描述】:... 查看详情
如果有“!”,如何使用 PyYAML 解析 YAML在 YAML 中
】如果有“!”,如何使用PyYAML解析YAML在YAML中【英文标题】:HowtoParseYAMLUsingPyYAMLifthereare\'!\'withintheYAML【发布时间】:2019-02-1320:53:53【问题描述】:我有一个YAML文件,我只想解析description变量;但是,我知道我的CloudFormation模板... 查看详情
在 Python 中解析 YAML 文件并访问数据?
...L文件和使用/访问解析后的YAML数据的方法。我遇到过关于如何解析YAML文件的解释,例如PyYAMLtutorial、“HowcanIparseaYAMLfileinPython”、“C 查看详情
我如何在 Java 编程中验证 YAML 结构
】我如何在Java编程中验证YAML结构【英文标题】:HowcouldIvalidateaYAMLstructureinjavaprogramming【发布时间】:2016-01-0413:51:34【问题描述】:我的目录中有一个YAML文件,我想使用java编程验证YAML文件的结构是否正确。在网上它有很多YAML检... 查看详情
yaml文件解析(代码片段)
文章目录yaml文件解析YAML语法格式查看api资源版本标签写一个nignx.yaml文件demo编写service服务的资源清单用--dry-run命令生成yaml资源清单将现有的资源生成模板导出生成yaml文件yaml文件解析Kubernetes支持YAML和JSON格式管理资源对象JSON格... 查看详情
yaml文件解析(代码片段)
文章目录yaml文件解析YAML语法格式查看api资源版本标签写一个nignx.yaml文件demo编写service服务的资源清单用--dry-run命令生成yaml资源清单将现有的资源生成模板导出生成yaml文件yaml文件解析Kubernetes支持YAML和JSON格式管理资源对象JSON格... 查看详情
yaml文件解析(代码片段)
文章目录yaml文件解析YAML语法格式查看api资源版本标签写一个nignx.yaml文件demo编写service服务的资源清单用--dry-run命令生成yaml资源清单将现有的资源生成模板导出生成yaml文件yaml文件解析Kubernetes支持YAML和JSON格式管理资源对象JSON格... 查看详情
解析 YAML 文件?
...rsingaYAMLfile?【发布时间】:2020-08-1321:08:58【问题描述】:如何使用yaml-cpp解析以下YAML文件?scene:-camera:film:width:800height:600filename:"out.svg"-shape:name:"muh"我试过了:#include<yaml-cpp/yaml.h>intmain()YAML::Noderoo 查看详情
如何在 azure devops 中解析 yaml 文件
】如何在azuredevops中解析yaml文件【英文标题】:Howtopossibleparseyamlfileinazuredevops【发布时间】:2021-12-3103:40:09【问题描述】:如何解析yaml文件以从中提取appVersion?我可以将文件内容与文件内容一起读取到变量中以获取所有内容但... 查看详情
如何在浏览器中解析 YAML? [复制]
】如何在浏览器中解析YAML?[复制]【英文标题】:HowtoparseYAMLinthebrowser?[duplicate]【发布时间】:2012-02-2101:26:49【问题描述】:我想在浏览器中解析YAML。理想情况下,我正在寻找一个支持浏览器的库。我发现的那些不是为了在浏览... 查看详情
如何将 YAML 文件解析/读取到 Python 对象中?
】如何将YAML文件解析/读取到Python对象中?【英文标题】:Howtoparse/readaYAMLfileintoaPythonobject?【发布时间】:2011-10-1513:07:48【问题描述】:例如,这个YAML:Person:name:XYZ到这个Python类:classPerson(yaml.YAMLObject):yaml_tag=\'Person\'def__init__(sel... 查看详情
如何将yaml文件拆分为多个文件?
】如何将yaml文件拆分为多个文件?【英文标题】:Howtosplityamlfileintoseveralfiles?【发布时间】:2017-03-2716:05:10【问题描述】:我有一个大(~2Gb)yaml文件。我使用yaml-cpp库和YAML::Loadfile函数。但是我有一个内存不足的问题。将这个文件... 查看详情
解析yaml python [关闭]
...6:53:51【问题描述】:yaml标记中有一个文件a:b:xtest2testtest3如何使用python(2.7.x)和PyYAML获取x?【问题讨论】:【参考方案1】:你不能!您发布的YAML会生成一个仅包含一个键a的字典,该键映射到值"b:xtest2testtest3"-您 查看详情