Как заставить YamlDotNet использовать Folded Block Scalar для всех многострочных строк

С YamlDotNet я получаю непоследовательную сериализацию. Я сериализую с помощью базового сериализатора:

new YamlDotNet.Serialization.SerializerBuilder()
.DisableAliases()
.ConfigureDefaultValuesHandling(DefaultValuesHandling.OmitDefaults)
.Build()
.Serialize(target)

Когда я сериализую простой анонимный объект, он работает более или менее правильно, расширяя многострочные строки с помощью Руководства по многострочному использованию YAML. Он имеет двойной перевод строки, что похоже на ошибку, аналогичную той, о которой сообщалось в этом вопросе, но в остальном это правильно.

Итак, если я сериализую:

    new {
    A = 1,
    B = "Testing",
    Group1 = new {
        Field1 = "Test 1\r\n\"This\"",
        Field2 = "Test 2\r\n'That'"
    }
}.ToYaml()

Я получаю примерно то, что ожидаю (кроме двойных новых строк):

A: 1
B: Testing
Group1:
  Field1: >-
    Test 1

    "This"
  Field2: >-
    Test 2

    'That'

Все идет нормально. Когда я пытаюсь сериализовать реальный объект, который выглядит так в JSON:

    {
  "Parameters": {
    "CommitmentSpecIds": {
      "Choices": {
        "1060": "Location"
      }
    },
    "DisplayValue": {
      "Text": "LOC: {{Question.Schedule->LocationName}}"
    },
    "Tooltip": {
      "Text": "Staff: {{Question.Schedule->StaffName}}\nAppointment: {{Question.Schedule->ScheduleDate@d}}"
    }
  }
}

Я заканчиваю тем, что строки заключаются в двойные кавычки, если у них есть символы новой строки, как в JSON.

Parameters:
  CommitmentSpecIds:
    Choices:
      1060: Location
  DisplayValue:
    Text: 'LOC: {{Question.Schedule->LocationName}}'
  Tooltip:
    Text: "Staff: {{Question.Schedule->StaffName}}\nAppointment: {{Question.Schedule->ScheduleDate@d}}"

Я искал пару часов, но предполагаю, что мне не хватает чего-то простого.

Как заставить Folded Block Scalar Style для всех строк с новыми строками.


person Wade Hatler    schedule 25.02.2020    source источник
comment
Используете ли вы Mustache в своем Yaml?   -  person Lesair Valmont    schedule 27.05.2020
comment
Не совсем. {{ }} - это своего рода язык шаблонов, но не конкретно усы.   -  person Wade Hatler    schedule 28.05.2020