首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Yaml文件的If条件- Java

Yaml文件的If条件- Java
EN

Stack Overflow用户
提问于 2016-11-15 20:18:10
回答 1查看 1.1K关注 0票数 0

我有Yaml文件:

代码语言:javascript
复制
#Define CDN domains
---
CDN: 
 quality: 200..300
 cost: low
 Video-type: mp4

使用这个Java代码,我检索CDN的子值:

代码语言:javascript
复制
 // The path of your YAML file.

 Yaml yaml = new Yaml();

 Map<String, Map<String, String>> values =
  (Map<String, Map<String, String>>) yaml
    .load(new FileInputStream(new File("/workspace/servlet-yaml/src/test.yaml")));

for (String key : values.keySet()) {
  Map<String, String> subValues = values.get(key);
  for (String subValueKey : subValues.keySet()) {
    System.out.println(values); 
  }
}

产出如下:

代码语言:javascript
复制
{CDN={quality=200..300, cost=low, Video-type=mp4}}
{CDN={quality=200..300, cost=low, Video-type=mp4}}
{CDN={quality=200..300, cost=low, Video-type=mp4}}
  • 首先,我不知道为什么会重复三次?
  • 其次,我想编写一个if cost = low代码,然后做一些事情。
EN

回答 1

Stack Overflow用户

发布于 2016-11-16 08:03:26

首先,我不知道它为什么收获三次?

因为你是这么说的。对于每个subValueKey,打印整个值集。有三个子键,所以完整的值集会被打印三次.

其次,我想编写一个代码,如果成本=低,那么就做一些事情。

代码语言:javascript
复制
Yaml yaml = new Yaml();

Map<String, Map<String, String>> values =
        (Map<String, Map<String, String>>) yaml.load(
        new FileInputStream(new File(
        "/workspace/servlet-yaml/src/test.yaml")));

final Map<String, String> cdn = values.get("CDN");
    // or iterate over all keys like you currently do
final String cost = cdn.get("cost");
    // or iterate over all subkeys and compare them to "cost".
    // that way, it's easier to handle missing keys.
if ("low".equals(cost)) {
    // do something
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40618934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档