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

时间:2018-05-25 11:09:18

标签: 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 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);

1 个答案:

答案 0 :(得分:1)

您可以通过在源YAML中强制使用带有标签的数据类型来解决此问题,例如

myObject:
  myIntValue: !!int 5
  myBoolValue: !!bool true
  myStringValue: hi there

这不是理想的方法,但是可以是一个有用的技巧。