C# YamlDotNet将整数反序列化为数字而不是字符串
我需要将yaml文件转换为json格式,以便根据json模式对其进行验证。 因此,我使用yamldotnet读取yaml文件,并使用json.net将其序列化为json格式的字符串。 不幸的是,在此之后,所有数值都转换为字符串,验证出错 我怎样才能避免呢 以下是我使用的代码:C# YamlDotNet将整数反序列化为数字而不是字符串,c#,visual-studio-2017,yamldotnet,C#,Visual Studio 2017,Yamldotnet,我需要将yaml文件转换为json格式,以便根据json模式对其进行验证。 因此,我使用yamldotnet读取yaml文件,并使用json.net将其序列化为json格式的字符串。 不幸的是,在此之后,所有数值都转换为字符串,验证出错 我怎样才能避免呢 以下是我使用的代码: var t = File.ReadAllText(src); var d = new YamlDotNet.Serialization.Deserializer(); var sr = new StringReader(t
var t = File.ReadAllText(src);
var d = new YamlDotNet.Serialization.Deserializer();
var sr = new StringReader(t);
var o = d.Deserialize(sr);
var s = new Newtonsoft.Json.JsonSerializer();
var sb = new StringBuilder();
var sw = new StringWriter(sb);
s.Serialize(sw, o);
txt = sb.ToString();
Console.WriteLine("JSON Output: {0}", txt);
您可以通过在源YAML中强制使用带有标记的数据类型来解决此问题,例如
myObject:
myIntValue: !!int 5
myBoolValue: !!bool true
myStringValue: hi there
这并不理想,但可能是一个有用的技巧。你能在这里发布你的
d
对象的属性吗?d的属性是:10个节点序列化器5个类型解析器,作为非公共成员:backwardsCompatibleConfiguration和valueDeserializer of type DefaultContainerNodeTypeResolver创建,我不知道这个特性