首页 > 解决方案 > 如何强制 YamlDotNet 对所有多行字符串使用折叠块标量

问题描述

使用 YamlDotNet 我得到不一致的序列化。我正在使用基本序列化程序进行序列化:

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()

我得到了我所期望的(除了双换行符):

答:1
B:测试
第一组:
  字段1:>-
    测试 1

    “这个”
  字段2:>-
    测试 2

    '那'

到目前为止,一切都很好。当我尝试在 JSON 中序列化一个看起来像这样的真实对象时:

    {
  “参数”: {
    “CommitmentSpecIds”:{
      “选择”:{
        “1060”:“位置”
      }
    },
    “显示值”:{
      “文本”:“地点:{{Question.Schedule->LocationName}}”
    },
    “工具提示”:{
      "Text": "工作人员:{{Question.Schedule->StaffName}}\n约会:{{Question.Schedule->ScheduleDate@d}}"
    }
  }
}

如果它们有任何换行符,我最终会用双引号括起来,就像在 JSON 中一样。

参数:
  CommitmentSpecIds:
    选择:
      1060:位置
  显示值:
    文本:'LOC:{{Question.Schedule->LocationName}}'
  工具提示:
    文本:“工作人员:{{Question.Schedule->StaffName}}\n约会:{{Question.Schedule->ScheduleDate@d}}”

我已经搜索了几个小时,但假设我错过了一些简单的东西。

如何Folded Block Scalar Style使用换行符强制所有字符串。

标签: serializationyamlyamldotnet

解决方案


推荐阅读