YamlDotNet десериализует целое число как число, а не как строку - PullRequest
0 голосов
/ 25 мая 2018

Мне нужно преобразовать файл 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 голосов
/ 04 октября 2018

Вы можете обойти это, форсируя типы данных с помощью тегов в исходном YAML, например:

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

Это не идеально, но может быть полезным трюком.

...