Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# YamlDotNet将整数反序列化为数字而不是字符串_C#_Visual Studio 2017_Yamldotnet - Fatal编程技术网

C# YamlDotNet将整数反序列化为数字而不是字符串

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

我需要将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 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创建,我不知道这个特性