2016-06-20 12 views
5

Điều này rất cụ thể nhưng lại khiến tôi bối rối. Chúng tôi đối xử phím lồng nhau + mảng thông thường gần như giống nhau về phân tích cú pháp - đôi khi thêm thông tin thêm khi cần thiết, như thế này:Chuỗi đa dòng YAML: các khóa so với các giá trị mảng

--- 
Entry 1: 
    - lorem: 
     true 
    - ipsum 
    - dolor 
Entry 2: 
    - lorem 
    - ipsum: 
     true 
    - dolor 
... 

... mà mang lại cho tôi JSON này:

{ 
    "Entry 2": [ 
    "lorem", 
    { 
     "ipsum": true 
    }, 
    "dolor" 
    ], 
    "Entry 1": [ 
    { 
     "lorem": true 
    }, 
    "ipsum", 
    "dolor" 
    ] 
} 

Tất cả mát mẻ và tốt đẹp. Vào chuỗi multiline cho nội dung nó được Messier nhưng vẫn hoạt động ok như thế này (giữ dán những để Online YAML Parser hoặc một số trình biên dịch khác để tham khảo):

--- 
#works: 

Test: 
    - lorem 
    - ipsum 
    - dolor 
? |- 
    multiline 
    Test 
: 
    - lorem 
    - ipsum: 
     true 
    - dolor 
... 

đi sâu hơn, chuỗi multiline trong công việc mảng cấp 2 của tôi là tốt, như dự kiến ​​theo thông số:

--- 
#works: 
Test: 
    - |- 
     multiline 
     lorem 
    - ipsum 
    - dolor 
? |- 
    multiline 
    Test 
: 
    - lorem 
    - ipsum: 
     true 
    - dolor 
... 

Wohoo! Nhưng ngay sau khi tôi trộn phím nhiều dòng và nhiều đường dây mảng trên cùng cấp, phá vỡ thiết lập của tôi:

--- 
#breaks: 
Test: 
    - |- 
     multiline 
     lorem 
    ? |- 
     multiline 
     ipsum 
    : 
     true 
? |- 
    multiline 
    Test 
: 
    - lorem 
    - ipsum: 
     true 
    - dolor 
... 

Làm thế nào để khắc phục điều đó?

Trả lời

7

YAML ngắt nếu bạn trộn các phím và các mục mảng trên cùng một mức. Bạn không cần chuỗi nhiều dòng cho điều đó:

- 1 
? 2 
: 3 

Phân tích cú pháp này thành gì? Một mảng? Lập bản đồ? Này, tuy nhiên, hoạt động:

- 1 
- ? 2 
    : 3 

Vì vậy, bạn có thể sửa chữa YAML của bạn như thế này:

--- 
Test: 
    - |- 
     multiline 
     lorem 
    - ? |- 
      multiline 
      ipsum 
     : 
     true 
? |- 
    multiline 
    Test 
: 
    - lorem 
    - ipsum: 
     true 
    - dolor 
... 
+0

Cảm ơn bạn rất nhiều cho giáo dục tôi về vấn đề này! – Paracetamol

Các vấn đề liên quan