gpt4 book ai didi

java - 如何使用 Java 从 Yaml 文件中读取列表映射

转载 作者:行者123 更新时间:2023-11-30 10:15:40 27 4
gpt4 key购买 nike

我有这样的 Yaml 文件:

accept: 
- "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"
accept-encoding:
- "gzip, deflate"
accept-language:
- "en-GB,en-US;q=0.9,en;q=0.8"
- "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7,lt;q=0.6"
connection:
- close
- keep-alive
dnt:
- 1
referer:
- "https://www.google.com/"
- "https://www.yahoo.com"
- "https://www.bing.com/"
upgrade-insecure-requests:
- 1
- 0
x-real-ip: ~

我试着用 :

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
Map user = mapper.readValue(new File("/home/a/headers.yaml"), Map.class);
System.out.println(ReflectionToStringBuilder.toString(user, ToStringStyle.MULTI_LINE_STYLE));

但只能得到单层嵌套。我认为这应该是列表 map ...

最佳答案

当我运行你的代码时它输出:

java.util.LinkedHashMap@6500df86[
accessOrder=false
threshold=12
loadFactor=0.75
]

这是 Map 对象的字符串表示,而不是内部的内容。

困难的方法:

如果您想使用ReflectionToStringBuilder,恐怕您将不得不通过扩展ToStringStyle 来实现您自己的样式。而且您的样式必须通过 Map 并提取键和值。

简单的方法:

然而,你可以通过简单的循环实现你想要的,而且要简单得多,下面是一个例子:

Map<String, List <Object>> user = 
mapper.readValue(new File("/home/a/headers.yaml"), Map.class);

for(Map.Entry<String, List<Object>> entry : user.entrySet()) {
System.out.println(entry.getKey());
List<Object> values = entry.getValue();
if(values != null) {
for (Object value : values) {
System.out.println(" - " + String.valueOf(value));
}
}
}

给定你的文件,它输出:

accept
- text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
accept-encoding
- gzip, deflate
accept-language
- en-GB,en-US;q=0.9,en;q=0.8
- ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7,lt;q=0.6
connection
- close
- keep-alive
dnt
- 1
referer
- https://www.google.com/
- https://www.yahoo.com
- https://www.bing.com/
upgrade-insecure-requests
- 1
- 0
x-real-ip

关于java - 如何使用 Java 从 Yaml 文件中读取列表映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50375014/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com