2016-06-20 11 views
5

這是非常具體的,但讓我難倒。我們對待嵌套鍵+規則排列幾乎解析相同的 - 在需要的時候有時會增加額外的信息,像這樣:YAML多行字符串:按鍵與數組值

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

......這給了我這個JSON:

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

所有的冷靜和罰款。輸入多行字符串的內容就變得混亂,但仍然工作正常像這樣(保持粘貼那些Online YAML Parser或其他一些編譯器以供參考):

--- 
#works: 

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

不斷深入,多串在我的第二級陣列的工作爲好,如按規格預計:

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

Wohoo!但只要我混合多行鍵和多行字符串數組在同一水平上,我的設置休息:

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

如何解決呢?

回答

7

如果在同一級別上混合鍵和數組項,YAML會中斷。你不需要多行字符串:

- 1 
? 2 
: 3 

這個解析到什麼地方?數組?映射?然而,這作品:

- 1 
- ? 2 
    : 3 

這樣你就可以解決您的YAML是這樣的:

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

非常感謝你對我的教育在這個問題上! – Paracetamol