如何将YAML转换为JSON?

Mic*_*own 4 .net c# json yaml yamldotnet

我正在寻找在YAML文件和JSON之间进行转换的方法。确实很难找到任何信息。

Mic*_*own 6

可以通过使用内置 JSON 库和 YamlDotNet 来实现此目的。这在 YamlDotNet 文档中并不明显,但我找到了一种相当简单的方法。

// convert string/file to YAML object
var r = new StreamReader(filename); 
var deserializer = new Deserializer(namingConvention: new CamelCaseNamingConvention());
var yamlObject = deserializer.Deserialize(r);

// now convert the object to JSON. Simple!
Newtonsoft.Json.JsonSerializer js = new Newtonsoft.Json.JsonSerializer();

var w = new StringWriter();
js.Serialize(w, yamlObject);
string jsonText = w.ToString();
Run Code Online (Sandbox Code Playgroud)

我很惊讶这竟然如此有效!JSON 输出与其他基于 Web 的工具相同。

  • 我建议将 `StreamReader` 包含在 [`using`](https://msdn.microsoft.com/en-us/library/yh598w02.aspx) 语句中。 (3认同)
  • 在`js.Serialize(w, o);`中`o`来自哪里。 (3认同)
  • 我认为“o”应该是“yamlObject”。 (2认同)

Ant*_*bry 5

如果不需要Json.NET的功能,则还可以直接使用Serializer类发出JSON:

// now convert the object to JSON. Simple!
var js = new Serializer(SerializationOptions.JsonCompatible);

var w = new StringWriter();
js.Serialize(w, o);
string jsonText = w.ToString();
Run Code Online (Sandbox Code Playgroud)

您可以在此处检查两个有效的小提琴:

  • 这段代码片段中的“o”与什么相关? (2认同)