2012-01-11 50 views
0

當使用管道文本字段解析/轉儲簡單的YAML文件時,我似乎看到了雙倍間距輸出。是否有SnakeYaml DumperOptions設置來避免雙倍間距輸出?

測試是:

public void yamlTest() 
{ 
    DumperOptions printOptions = new DumperOptions(); 
    printOptions.setLineBreak(DumperOptions.LineBreak.UNIX); 
    Yaml y = new Yaml(printOptions); 
    String input = "foo: |\n" + 
      "  line 1\n" + 
      "  line 2\n"; 
    Object parsedObject = y.load(new StringReader(input)); 
    String output = y.dump(parsedObject); 
    System.out.println(output); 
} 

並且輸出是:

{foo: 'line 1 

    line 2 

    '} 

注線1和線2之間的額外的空間,並且該字符串的結束前2行後。

此測試在Mac OS X 10.6,java版本「1.6.0_29」上運行。

謝謝!

馬克

回答

1

在原始字符串使用文字樣式 - 它是由指示「|」字符。轉儲文本時,使用單引號樣式,最後忽略'\ n'字符。這就是爲什麼他們用空行重複的原因。 嘗試在DumperOptions設置不同的風格:

// and others - FOLDED, DOUBLE_QUOTED 
DumperOptions.setDefaultScalarStyle(ScalarStyle.LITERAL) 
+0

感謝您的指針......這有助於我理解的格式。可悲的是,我想在不同情況下使用不同的格式選項(短值與多行),所以看起來我需要一個自定義的Representsenter。 – 2012-01-13 19:08:57