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