我在 C# 中使用 YamlDotNet 序列化为 yaml。当我序列化字符串值(例如“foo”)时,它显示为
取决于:foo
但是当值为“[]”时,它总是被单引号包围
取决于:'[]'
这在 Azure 管道的上下文中对我不起作用。它必须不带引号。
取决于:[]
我怎样才能实现这个目标?
我可以在使用 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; }
}
结果: