YamlDotNet 将整数反序列化为数字而不是字符串
YamlDotNet deserialize integer as numeric not as string
我需要将 yaml 文件 转换为 json 格式 以便根据 [ 验证它=30=] 架构。
所以我用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
这并不理想,但可能是一个有用的技巧。
我需要将 yaml 文件 转换为 json 格式 以便根据 [ 验证它=30=] 架构。 所以我用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
这并不理想,但可能是一个有用的技巧。