You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中获取YAML文件fruits下的子键名字符串数组

Java 解析YAML提取键为String数组的实现方法

完全可行,你可以通过第三方YAML解析库(比如SnakeYAML或Jackson YAML模块)实现需求,核心思路是将YAML内容解析为嵌套Map,再提取目标节点的键集合转成String数组。以下是具体实现:

方法一:使用SnakeYAML

SnakeYAML是Java生态中常用的YAML解析库,步骤如下:

  1. 添加Maven依赖
<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>2.2</version> <!-- 建议使用最新稳定版 -->
</dependency>
  1. 解析代码
import org.yaml.snakeyaml.Yaml;
import java.io.InputStream;
import java.util.Map;

public class FruitExtractor {
    public static void main(String[] args) {
        Yaml yamlParser = new Yaml();
        // 从resources目录加载YAML文件
        try (InputStream input = FruitExtractor.class.getClassLoader().getResourceAsStream("fruits.yaml")) {
            // 解析为嵌套Map结构
            Map<String, Map<String, Map<String, String>>> yamlData = yamlParser.load(input);
            // 获取fruits节点下的所有子键
            Map<String, Map<String, String>> fruitsMap = yamlData.get("fruits");
            String[] fruitNames = fruitsMap.keySet().toArray(new String[0]);
            
            // 验证结果
            for (String name : fruitNames) {
                System.out.println(name);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

方法二:使用Jackson YAML模块

如果你已经在项目中使用Jackson处理JSON,也可以用它的YAML扩展:

  1. 添加Maven依赖
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-yaml</artifactId>
    <version>2.15.2</version> <!-- 建议使用最新稳定版 -->
</dependency>
  1. 解析代码
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.io.File;
import java.util.Map;

public class FruitJacksonExtractor {
    public static void main(String[] args) {
        ObjectMapper yamlMapper = new ObjectMapper(new YAMLFactory());
        try {
            // 读取YAML文件(替换为你的文件路径)
            Map<String, Map<String, Object>> yamlData = yamlMapper.readValue(new File("src/main/resources/fruits.yaml"), Map.class);
            Map<String, Object> fruitsMap = yamlData.get("fruits");
            String[] fruitNames = fruitsMap.keySet().toArray(new String[0]);
            
            // 验证结果
            for (String name : fruitNames) {
                System.out.println(name);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

注意事项

你提供的YAML中"grapes"拼写为"graps",如果需要最终数组包含正确的"grapes",请先修正YAML文件中的拼写错误。

内容的提问来源于stack exchange,提问作者Chocorot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 14:55:31