Estou tentando analisar um arquivo YAML usando Snakeyaml no Groovy. O objetivo é criar um mapa no qual eu possa pesquisar.
O arquivo que estou usando está estruturado como:
maintainers:
- component: PowerPuff Girls
pg: Utonium Labs
people:
- Buttercup
- Blossom
- Bubbles
files:
- sugar/*
- spice/*
- things/*nice*
- chemicalx/*
- component: Gangreen Gang
pg: Villians
people:
- Ace
- Snake
- Big Billy
files:
- ace/*
- snake/*
O problema é: quando eu crio um mapa e retorno o valor, o maintainers
valor está desviando o formato do que eu esperava. Além disso, parece que nenhum dos valores String foi convertido em String. A saída é:
[maintainers:[[component:PowerPuff Girls, pg:Utonium Labs, people:[Buttercup, Blossom, Bubbles], files:[sugar/*, spice/*, things/*nice*, chemicalx/*]], [component:Gangreen Gang, pg:Villians, people:[Ace, Snake, Big Billy], files:[ace/*, snake/*]]]]
Em um mundo perfeito, eu teria:
[component: 'PowerPuff Girls', pg: 'Utonium Labs', people: ['Buttercup', 'Blossom', 'Bubbles'], files: ['sugar/*','spice/*','things/*nice*', 'chemicalx']],
[component: 'Gangreen Gang', pg: 'Villians', people: ['Ace', 'Snake', 'Big Billy'], files: ['ace/*','snake/*']]
Devo estar perdendo alguma coisa boba ao reformatar este mapa. Aceito todas as sugestões!
Passo 1: Carregando o arquivo como Mapa
Yaml yaml = new Yaml()
Map yamlMap = yaml.load(yamlFile)
Etapa 2: Retornando o mapa para observar o formato return yamlMap
Resulta em:
[maintainers:[[component:PowerPuff Girls, pg:Utonium Labs, people:[Buttercup, Blossom, Bubbles], files:[sugar/*, spice/*, things/*nice*, chemicalx/*]], [component:Gangreen Gang, pg:Villians, people:[Ace, Snake, Big Billy], files:[ace/*, snake/*]]]]
Tentei definir chaves e valores individuais separadamente e reconstruí-los, mas não consegui os agrupamentos conforme esperado. Por exemplo:def myVariable = yamlMap['maintainers']['component']
provavelmente o mais próximo do seu
ideal world
formato é json.se você deseja pesquisar itens que
component
correspondam a algum valor:métodos mais interessantes na lista/coleção:
https://docs.groovy-lang.org/latest/html/groovy-jdk/java/util/List.html