如何在groovy中解析YAML文件?

a0zr77ik  于 2023-02-15  发布在  其他
关注(0)|答案(2)|浏览(185)

假设您有一个名为example.yaml的文件,其中包含以下内容:- subject: maths.
如何获取- subject后面的字符串?
我已经可以读取文件的内容,但想知道如何从文件中获取特定的字符串。
注意:我知道regex可能会有帮助,但从来没有用过它,并将感谢任何帮助。

f4t66c6m

f4t66c6m1#

我在这里添加相同的示例,但使用原生YAMLSlurper(Groovy 3.x+)实现:

import groovy.yaml.YamlSlurper

def exampleYaml = '''\
---
- subject: "maths"
- subject: "chemistry"
'''

List example = new YamlSlurper().parseText(exampleYaml)
// If your source is a File
// List example = new YamlSlurper().parse("example.yaml" as File)

example.each{println it.subject}

对于以前的版本(原始答案)

snakeyaml是一个解析YAML文件的库,易于在groovy中使用。

UPDATE:将示例变量的类型更改为List,因为示例文件的顶级元素是集合

@Grab('org.yaml:snakeyaml:1.17')

import org.yaml.snakeyaml.Yaml

Yaml parser = new Yaml()
List example = parser.load(("example.yaml" as File).text)

example.each{println it.subject}

snakeyaml的完整文档:
https://bitbucket.org/snakeyaml/snakeyaml/wiki/Documentation

to94eoyn

to94eoyn2#

FWIW,即将发布的(撰写本文时)Groovy 3.0版直接支持yaml:http://docs.groovy-lang.org/next/html/api/groovy/yaml/package-summary.html与传统的YamlSlurper / YamlBuilder组合您可以随时切换到这个尚未正式发布的版本。
[编辑]版本3.0.x现在已经正式发布,其中包含groovy.yaml包http://docs.groovy-lang.org/latest/html/api/groovy/yaml/package-summary.html

相关问题