YAML 다중 라인 어레이


140

YAML 에서는 여러 줄 문자열을 쉽게 만들 수 있습니다 . 그러나 |문자 를 사용하여 여러 줄 배열 (주로 구성 파일 내에서 읽기 쉽도록)을 만드는 기능을 원합니다 .

YAML 배열 은 다음과 같이 나타낼 수 있습니다 ['key1', 'key2', 'key3'].

YAML 시퀀스 는 대시와 공백, 문자열을 사용합니다.

- String1
- String2
- String3

이것은 다음과 같이 평가됩니다 ['string1', 'string2', 'string3']..

YAML 매핑 은 YAML 에서 항상 볼 수있는 키 및 값 쌍의 배열입니다.

Key1: string1
Key2: string2
Key3: string3

이것은 모두 좋고 훌륭하지만, 나는 멀티 라인 배열을 수행하는 방법을 볼 수 없습니다. 이 같은:

|
['string1', 'string2', 'string3']
['string4', 'string5', 'string6']

YAML에서 여러 배열 매핑을 만들고 선택한 프로그래밍 언어로 병합하는 데 부족한 경우 { }Python 과는 달리 YAML에서 멀티 라인 배열을 달성 할 수있는 방법이 있습니까?


솔직히, 멀티 라인 배열은 무엇이며 언제 의미가 있어야합니까? 코드의 모양이 아니라
OK999

한 번에 하나의 화면을 모두 보지 않고 모든 옵션을 보려면 화면을 가로로 스크롤해야합니다.
Jimbo

답변:


241

YAML의 시퀀스 이다 어레이 . 이것이 올바른 표현 방법입니다.

key:
  - string1
  - string2      
  - string3
  - string4
  - string5
  - string6

이는 다음과 같은 의미로 동일합니다.

key: ['string1', 'string2', 'string3', 'string4', 'string5', 'string6']

한 줄 배열을 여러 줄로 나누는 것도 합법적입니다.

key: ['string1', 'string2', 'string3', 
  'string4', 'string5', 
  'string6']

단일 행 배열에 여러 줄 문자열이 있습니다.

key: ['string1', 'long
  string', 'string3', 'string4', 'string5', 'string6']

1
문자열이-로 시작하면 문제입니까 (예 : 명령 행에 전달 된 옵션)? 그런 다음 인용해야합니까? `- "-myarg"`?
ekkis

2
이는 YAML을 구문 분석하는 데 사용하는 프로그램에 따라 다릅니다. 이 질문은 YAML 사양에 관한 것입니다.
Steve Bennett

39

이것을 시도 했습니까?

-
  name: Jack
  age: 32
-
  name: Claudia
  age: 25

나는 이것을 얻는다 : [{"name"=>"Jack", "age"=>32}, {"name"=>"Claudia", "age"=>25}](나는 YAMLRuby 클래스를 사용한다 ).


6

다음과 같이 작동합니다.

myarray: [
  String1, String2, String3,
  String4, String5, String5, String7
]

snakeyaml 구현을 사용하여 테스트했지만 다른 구현에 대해서는 잘 모르겠습니다.


2
그것은 꼭두각시 엔터프라이즈 3.7 hiera yaml (Ruby yaml)과 함께 작동했습니다. 루비 yaml이 매우 민감하다는 것을 알게 된 것은 식별자이며 탭 사용을 피하십시오. 따라서 위의 예는 첫 줄이 myarray: [String1, String2, String3,있고 두 번째 줄이`String4, String5, String5, String7] 인 동일한 수의 공간으로 식별되는 두 줄에서 와 같아야합니다.
Walid

2

다음은 배열 요소 값이 작을 때 가독성 관점에서 나와 저에게 효과적입니다.

key: [string1, string2, string3, string4, string5, string6]

참고 : 사용 된 snakeyaml 구현


0

필요한 것이 배열의 배열이면 다음과 같이 할 수 있습니다.

key:
  - [ 'value11', 'value12', 'value13' ]
  - [ 'value21', 'value22', 'value23' ]

Vinicius에게 감사드립니다. 그러나 여러 줄의 여러 줄이 아니라 여러 줄로 된 배열을 만드는 기능을 원합니다.
Jimbo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.