使用 YamlDotNet 序列化时如何排除带有特殊字符的字符串周围的单引号

问题描述 投票:0回答:1

我在 C# 中使用 YamlDotNet 序列化为 yaml。当我序列化字符串值(例如“foo”)时,它显示为

取决于:foo

但是当值为“[]”时,它总是被单引号包围

取决于:'[]'

这在 Azure 管道的上下文中对我不起作用。它必须不带引号。

取决于:[]

我怎样才能实现这个目标?

c# serialization yaml azure-pipelines yamldotnet
1个回答
0
投票

我可以在使用 YAMLDotNet 时重现类似的情况。

当值包含特殊字符时,会添加单引号以将其视为字符串。

这似乎是这个 .Net 库的默认行为。

其他用户也在 Github 反馈站点报告了相同的问题:如何在 YamlDotNet 中序列化 !include 指令。您可以关注此票并等待开发商回复

要解决此问题,您可以使用 C# 中的 Replace 方法将

'[]'
替换为
[]

例如:

public class Program
{
    public static void Main()
    {
        var serializer = new SerializerBuilder()
            .Build();

        var yaml = serializer.Serialize(new QuotedString { DependsOn = "[]" , teststring="test"});
        var newyaml = yaml.Replace("'[]'","[]");
        Console.WriteLine(newyaml);
    }
}

public class QuotedString
{
    [YamlMember(ScalarStyle = ScalarStyle.Plain)]
    public string DependsOn { get; set; }
    public string teststring { get; set; }
}

结果:

© www.soinside.com 2019 - 2024. All rights reserved.