PowerShell을 사용하여 JSON을 YAML로 변환


0

이런 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"],
  }
]

PowerShell을 사용하여이 json 데이터를 yaml로 변환하려면 어떻게해야합니까? 각 json 객체는 yaml로 변환되어 yaml로 저장되며, 파일 이름은 title keys 속성의 값이된다. ?

다음 명령을 실행할 때 ($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'

그러나 찾고자하는 출력은 다음과 같이 보일 것입니다 - 파일 이름이 타이틀 키의 속성 값이고 파일의 내용이 yaml로 변환 된 해당 json 객체가 될 것입니다.

노미네이트 최소 요구 사항은 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'
---

아디 피 세이 모질 에세이 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'
---

최소 애니메이션 광고 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'
---


@SadBunny 예, 있습니다.
Ishan

그것은 당신의 정확한 목적을위한 완전한 구현을 가지고있는 것 같습니다. 아니?
SadBunny

@SadBunny, 그 기사는 내가 원하는 것을 정확히하지 않습니다. 내 업데이트 된 질문보기
Ishan

글쎄, 확실히 확실한 기능입니다 ... 그래서 들어오는 데이터를 파일명이 특정 키의 값에 의존하는 하나 이상의 파일로 나눠 넣고 싶습니까? 즉, 현재 코드를 수정해야합니다. 방법을 모르는 경우 오버플로 스택에 코드를 게시하고 코드를 기능에 변경하는 데 도움을 요청하는 것이 좋습니다. 아마 그다지 어렵지 않을 것입니다. YAML 객체를 분리하고, 반복하고, 값을 얻은 다음 저장하십시오. 가능한 바로 가기는 전체 결과에 대한 대규모 정규 표현식 검색 및 교체입니다.
SadBunny

답변:


1

나는 다른 사람이 대답을 찾고있는 경우 내 자신의 질문에 대답하고 있습니다.

$obj = ($json  | ConvertFrom-Json)

ForEach($item in $obj) {
    $filename = "$($item.title).yaml"
    $item | ConvertTo-YAML > $filename
    "---" >> $filename
}

꽤 예쁜 :) 멋진 직장.
SadBunny
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.