Как заставить YamlDo tNet использовать скалярный сложенный блок для всех многострочных строк - PullRequest
1 голос
/ 25 февраля 2020

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

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

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

Так что, если я сериализую:

    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 для всех строк с переводом строки.

...