Есть ли параметр SnakeYaml DumperOptions, чтобы избежать вывода с двойным интервалом?

Кажется, я вижу вывод с двойным интервалом при разборе / выводе простого файла YAML с текстовым полем pipe.

Тест это:

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) 
Другие вопросы по тегам