Groovy,从 yml 文件通过迭代添加到地图
Groovy, Add to Map via iteration from yml file
我需要帮助来读取 yml 文件并将多个条目添加到地图。
如果我手动添加 yml 文件中的每个条目,它将如下所示:
Map<String, String[]> map1 = [:]
map1."TestvalueX" = "0"
map1."TestvalueY" = "1"
map1."TestvalueZ" = "4"
map1 的输出:[TestvalueX:0, TestvalueY:1, TestvalueZ:4]
示例 YML 文件:
- TestvalueX: "0"
- TestvalueY: "1"
- TestvalueZ: "4"
我需要添加什么来读取 yml 文件并通过迭代将这些值添加到 map1?
在 https://github.com/jeffbrown/yamlparse 查看项目。
app/src/main/resources/demo.yml
info:
TestValueX: 0
TestValueY: 1
TestValueZ: 4
app/src/main/groovy/yamlparse/App.groovy
package yamlparse
import groovy.yaml.YamlSlurper
class App {
static void main(String[] args) {
def slurper = new YamlSlurper()
def yaml = slurper.parse(App.getResourceAsStream('/demo.yml'))
Map m = yaml.info
println m
assert m.TestValueX == 0
assert m.TestValueY == 1
assert m.TestValueZ == 4
}
}
这似乎有效:
~ $ git clone git@github.com:jeffbrown/yamlparse.git
Cloning into 'yamlparse'...
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 24 (delta 0), reused 24 (delta 0), pack-reused 0
Receiving objects: 100% (24/24), 59.84 KiB | 475.00 KiB/s, done.
~ $
~ $
~ $ cd yamlparse
yamlparse (main)$
yamlparse (main)$ ./gradlew run
> Task :app:run
[TestValueX:0, TestValueY:1, TestValueZ:4]
您可以编写代码来迭代该 Map
并对数据做任何您喜欢的事情。
编辑:
问题表明 Yaml 看起来像这样:
- TestValueX: 0
- TestValueY: 1
- TestValueZ: 4
当我写出最初的答案时,我认为那是一个错误,你实际上在 Yaml 中有一个 Map,但如果 Yaml 是问题实际上是正确的,那么你可以使用这样的东西:
def slurper = new YamlSlurper()
def yaml = slurper.parse(App.getResourceAsStream('/demo.yml'))
Map newMap = [:]
for(Map m : yaml) {
newMap += m
}
println newMap
assert newMap.TestValueX == 0
assert newMap.TestValueY == 1
assert newMap.TestValueZ == 4
我需要帮助来读取 yml 文件并将多个条目添加到地图。
如果我手动添加 yml 文件中的每个条目,它将如下所示:
Map<String, String[]> map1 = [:]
map1."TestvalueX" = "0"
map1."TestvalueY" = "1"
map1."TestvalueZ" = "4"
map1 的输出:[TestvalueX:0, TestvalueY:1, TestvalueZ:4]
示例 YML 文件:
- TestvalueX: "0"
- TestvalueY: "1"
- TestvalueZ: "4"
我需要添加什么来读取 yml 文件并通过迭代将这些值添加到 map1?
在 https://github.com/jeffbrown/yamlparse 查看项目。
app/src/main/resources/demo.yml
info:
TestValueX: 0
TestValueY: 1
TestValueZ: 4
app/src/main/groovy/yamlparse/App.groovy
package yamlparse
import groovy.yaml.YamlSlurper
class App {
static void main(String[] args) {
def slurper = new YamlSlurper()
def yaml = slurper.parse(App.getResourceAsStream('/demo.yml'))
Map m = yaml.info
println m
assert m.TestValueX == 0
assert m.TestValueY == 1
assert m.TestValueZ == 4
}
}
这似乎有效:
~ $ git clone git@github.com:jeffbrown/yamlparse.git
Cloning into 'yamlparse'...
remote: Enumerating objects: 24, done.
remote: Counting objects: 100% (24/24), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 24 (delta 0), reused 24 (delta 0), pack-reused 0
Receiving objects: 100% (24/24), 59.84 KiB | 475.00 KiB/s, done.
~ $
~ $
~ $ cd yamlparse
yamlparse (main)$
yamlparse (main)$ ./gradlew run
> Task :app:run
[TestValueX:0, TestValueY:1, TestValueZ:4]
您可以编写代码来迭代该 Map
并对数据做任何您喜欢的事情。
编辑:
问题表明 Yaml 看起来像这样:
- TestValueX: 0
- TestValueY: 1
- TestValueZ: 4
当我写出最初的答案时,我认为那是一个错误,你实际上在 Yaml 中有一个 Map,但如果 Yaml 是问题实际上是正确的,那么你可以使用这样的东西:
def slurper = new YamlSlurper()
def yaml = slurper.parse(App.getResourceAsStream('/demo.yml'))
Map newMap = [:]
for(Map m : yaml) {
newMap += m
}
println newMap
assert newMap.TestValueX == 0
assert newMap.TestValueY == 1
assert newMap.TestValueZ == 4