using YamlDotNet.Core.Events;
using YamlDotNet.RepresentationModel;
public static void Main()
var json = "{\"swagger\":\"2.0\",\"info\":{\"title\":\"UberAPI\",\"description\":\"MoveyourappforwardwiththeUberAPI\",\"version\":\"1.0.0\"},\"host\":\"api.uber.com\",\"schemes\":[\"https\"],\"basePath\":\"/v1\",\"produces\":[\"application/json\"]}";
var yaml = new YamlStream();
yaml.Load(new StringReader(json));
yaml.Accept(new JsonToYamlConverterVisitor());
var outputYaml = new StringWriter();
yaml.Save(outputYaml, false);
var yamlString = outputYaml.ToString();
Console.WriteLine(yamlString);
class JsonToYamlConverterVisitor : YamlVisitorBase
public override void Visit(YamlScalarNode scalar)
if (scalar.Style == ScalarStyle.DoubleQuoted && (scalar.Value == "null" || scalar.Value == "true" || scalar.Value == "false"))
scalar.Style = ScalarStyle.DoubleQuoted;
else scalar.Style = ScalarStyle.Plain;
public override void Visit(YamlSequenceNode sequence)
sequence.Style = SequenceStyle.Block;
public override void Visit(YamlMappingNode mapping)
mapping.Style = MappingStyle.Block;