【问题标题】:YamlDotNet deserialize integer as numeric not as stringYamlDotNet 将整数反序列化为数字而不是字符串
【发布时间】:2018-05-25 11:09:17
【问题描述】:

我需要将 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);

【问题讨论】:

  • 你能在这里发布你的d对象的属性吗?
  • d 的属性是:10 个 NodeDeserializers 5 个 TypeResolver 并且作为非公共成员:backwardsCompatibleConfiguration 和 valueDeserializer 类型为 DefaultContainersNodeTypeResolver

标签: c# visual-studio-2017 yamldotnet


【解决方案1】:

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

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

这并不理想,但可能是一个有用的技巧。

【讨论】:

  • 太好了,我不知道这个功能
猜你喜欢
  • 2022-08-16
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-13
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
相关资源
最近更新 更多