Estou respondendo minha própria pergunta caso alguém esteja procurando uma resposta.
$obj = ($json | ConvertFrom-Json)
ForEach($item in $obj) {
$filename = "$($item.title).yaml"
$item | ConvertTo-YAML > $filename
"---" >> $filename
}
Eu tenho um json como este.
sample.json
[
{
"id": 0,
"name": "Cofine",
"title": "laboris minim qui nisi esse amet non",
"description": "Consequat laborum quis exercitation culpa. Culpa esse sint consectetur deserunt non.",
"website": "cofine.com",
"image": "http://placehold.it/32x32",
"labels": ["blue", "red"],
"labels_link": ["http://cofine.com/labels/blue","http://cofine.com/labels/red"],
},
{
"id": 1,
"name": "Zomboid",
"title": "adipisicing mollit esse aliquip ullamco nisi laboris",
"description": "Enim consectetur eu commodo officia. Id pariatur proident nostrud occaecat adipisicing voluptate do nisi incididunt id ex commodo.",
"website": "zomboid.com",
"image": "http://placehold.it/32x32",
"labels": ["red"],
"labels_link": ["http://zomboid.com/labels/red"],
},
{
"id": 2,
"name": "Sulfax",
"title": "non minim anim irure nulla ad elit",
"description": "Pariatur anim officia adipisicing Lorem dolor cillum eu ex veniam sint consequat incididunt. Minim mollit reprehenderit mollit sint laboris consequat.",
"website": "sulfax.com",
"image": "http://placehold.it/32x32",
"labels": ["green", "yellow", "blue"],
"labels_link": ["http://sulfax.com/labels/green","http://sulfax.com/labels/yellow","http://sulfax.com/labels/blue"],
}
]
Como faço para converter esses dados json para yaml usando o PowerShell onde cada objeto json será convertido em yaml e salvo como yaml em seu próprio arquivo, sendo o nome do arquivo o valor das propriedades das chaves de título ?
Quando eu executo o seguinte comando ($json | ConvertFrom-Json) | ConvertTo-YAML
(onde a função ConvertTo-YAML
é obtida da site do simpletalk ), esta é a saída que recebo.
Resultado
---
id: 0
name: 'Cofine'
title: 'laboris minim qui nisi esse amet non'
description: Consequat laborum quis exercitation culpa. Culpa esse sint consectetur deserunt non.
website: 'cofine.com'
image: 'http://placehold.it/32x32'
labels:
- 'blue'
- 'red'
labels_link:
- 'http://cofine.com/labels/blue'
- 'http://cofine.com/labels/red'
---
id: 1
name: 'Zomboid'
title: 'adipisicing mollit esse aliquip ullamco nisi laboris'
description: Enim consectetur eu commodo officia. Id pariatur proident nostrud occaecat adipisicing voluptate do nisi incididunt id ex commodo.
website: 'zomboid.com'
image: 'http://placehold.it/32x32'
labels:
- 'red'
labels_link:
- 'http://zomboid.com/labels/red'
---
id: 2
name: 'Sulfax'
title: 'non minim anim irure nulla ad elit'
description: Pariatur anim officia adipisicing Lorem dolor cillum eu ex veniam sint consequat incididunt. Minim mollit reprehenderit mollit sint laboris consequat.
website: 'sulfax.com'
image: 'http://placehold.it/32x32'
labels:
- 'green'
- 'yellow'
- 'blue'
labels_link:
- 'http://sulfax.com/labels/green'
- 'http://sulfax.com/labels/yellow'
- 'http://sulfax.com/labels/blue'
No entanto, a saída que estou procurando ficaria assim: onde o nome do arquivo é o valor das propriedades das chaves de título e o conteúdo do arquivo seria o objeto json correspondente convertido em yaml.
laboris minim qui nisi esse amet non.yaml
---
id: 0
name: 'Cofine'
title: 'laboris minim qui nisi esse amet non'
description: Consequat laborum quis exercitation culpa. Culpa esse sint consectetur deserunt non.
website: 'cofine.com'
image: 'http://placehold.it/32x32'
labels:
- 'blue'
- 'red'
labels_link:
- 'http://cofine.com/labels/blue'
- 'http://cofine.com/labels/red'
---
adipisizing mollit esse aliquip ullamco nisi laboris.yaml
---
id: 1
name: 'Zomboid'
title: 'adipisicing mollit esse aliquip ullamco nisi laboris'
description: Enim consectetur eu commodo officia. Id pariatur proident nostrud occaecat adipisicing voluptate do nisi incididunt id ex commodo.
website: 'zomboid.com'
image: 'http://placehold.it/32x32'
labels:
- 'red'
labels_link:
- 'http://zomboid.com/labels/red'
---
não mínimo anim irure nulla ad elit.yaml
---
id: 2
name: 'Sulfax'
title: 'non minim anim irure nulla ad elit'
description: Pariatur anim officia adipisicing Lorem dolor cillum eu ex veniam sint consequat incididunt. Minim mollit reprehenderit mollit sint laboris consequat.
website: 'sulfax.com'
image: 'http://placehold.it/32x32'
labels:
- 'green'
- 'yellow'
- 'blue'
labels_link:
- 'http://sulfax.com/labels/green'
- 'http://sulfax.com/labels/yellow'
- 'http://sulfax.com/labels/blue'
---
Estou respondendo minha própria pergunta caso alguém esteja procurando uma resposta.
$obj = ($json | ConvertFrom-Json)
ForEach($item in $obj) {
$filename = "$($item.title).yaml"
$item | ConvertTo-YAML > $filename
"---" >> $filename
}
Tags powershell json yaml