【问题标题】:how to serialize a YamlDocument to yaml string如何将 YamlDocument 序列化为 yaml 字符串
【发布时间】:2018-06-14 22:12:35
【问题描述】:

我使用 YamlDotnet 并且我有一个 YamlDocument。现在我想将其转换为他在内存中的 yaml 文本表示,但我不知道如何实现。

var yaml = new YamlDocument(new YamlMappingNode());
yaml.Add("one", "other")
var text = yaml.ToYamlText()

我应该输入类似的文字:

one: "other"

我尝试了 zith Serializer 类但没有成功

【问题讨论】:

    标签: c# .net yaml yamldotnet


    【解决方案1】:

    好的,所以我在源代码的单元测试中找到了解决方案:

    var yaml = new YamlDocument(new YamlMappingNode());
    yaml.Add("one", "other");
    var yamlStream = new YamlStream(yaml);
    var buffer = new StringBuilder();
    using (var writer = new StringWriter(buffer))
    {
        yamlStream.Save(writer);
        yamlText = writer.ToString();
    }
    

    无论如何,我现在有另一个问题,我需要将我的所有值都用双引号括起来。在另一个应用程序中,我使用了 QuoteSurroundingEventEmitter : ChainedEventEmitter 和对象图序列化。但是使用 yamlStream.Save() 我看不到如何实现这种机制

    【讨论】:

    • 不添加字符串,而是添加YamlScalarNode 并设置其样式属性:mapping.Add("one", new YamlScalarNode("other") { Style = ScalarStyle.DoubleQuoted });。在此处查看完整的示例 - dotnetfiddle.net/YZlsc1
    • 是的,我终于做到了。非常感谢您的回答
    • @AntoineAubry 快速提问,当我使用 YamlStream.Save 时,作为输出结果,我得到了像这样的键之前或之后的奇怪随机字符串:&1887939252。知道为什么吗?
    • 好吧,我又找到了原因。 Save的第二个参数需要传入false...
    • YamlDocument 似乎没有 Add 方法。有什么变化吗?
    猜你喜欢
    • 1970-01-01
    • 2011-01-15
    • 2010-09-13
    • 1970-01-01
    • 2021-01-08
    • 2022-11-15
    • 2020-05-20
    • 2019-10-25
    • 2016-01-22
    相关资源
    最近更新 更多