Я отвечаю на свой вопрос в случае, если кто-то еще ищет ответ.
$obj = ($json | ConvertFrom-Json) ForEach($item in $obj) { $filename = "$($item.title).yaml" $item | ConvertTo-YAML > $filename "---" >> $filename }
У меня есть данные JSON, как это.
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"], } ]
Как преобразовать эти данные json в yaml с помощью PowerShell, где каждый объект json будет преобразован в yaml и сохранен как yaml в своем собственном файле, имя файла которого равно значению свойств ключей заголовка ?
Когда я запускаю следующую команду ($json | ConvertFrom-Json) | ConvertTo-YAML
(где ConvertTo-YAML
функция взята с веб-сайта simpletalk ), это вывод, который я получаю.
Выход
--- 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'
Однако вывод, который я ищу, будет выглядеть следующим образом - где имя файла является значением свойств ключей заголовка, а содержимое файла будет соответствующим объектом json, преобразованным в yaml.
labouris minim qui nisi esse 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' ---
адиписис молли эссе аликип ульламко ниси лейборис.ямл
--- 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' ---
non minim 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' ---
Я отвечаю на свой вопрос в случае, если кто-то еще ищет ответ.
$obj = ($json | ConvertFrom-Json) ForEach($item in $obj) { $filename = "$($item.title).yaml" $item | ConvertTo-YAML > $filename "---" >> $filename }