Skip to content

Instantly share code, notes, and snippets.

@svejdo1
Created September 7, 2023 10:49
Show Gist options
  • Save svejdo1/9ef0b8ff99b742308d539f4c2518f250 to your computer and use it in GitHub Desktop.
Save svejdo1/9ef0b8ff99b742308d539f4c2518f250 to your computer and use it in GitHub Desktop.
Converst json file format to bicep
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Text;
var @object = JObject.Parse(File.ReadAllText(@"C:\temp\swagger.json"));
var stream = new MemoryStream();
using var writer = new CustomizedJsonWriter(new StreamWriter(stream));
writer.QuoteName = false;
writer.Indentation = 4;
writer.Formatting = Formatting.Indented;
writer.QuoteChar = '\'';
@object.WriteTo(writer);
writer.Close();
var content = Encoding.UTF8.GetString(stream.ToArray());
File.WriteAllText(@"c:\temp\swagger.bicep", content);
class CustomizedJsonWriter : JsonTextWriter
{
public CustomizedJsonWriter(TextWriter writer) : base(writer)
{
}
protected override void WriteValueDelimiter()
{
}
public override void WritePropertyName(string name)
{
// TODO - something smarter ?
if (name.Contains("-")
|| name.Contains("$")
|| name.Contains("/")
|| name.StartsWith('0')
|| name.StartsWith('1')
|| name.StartsWith('2')
|| name.StartsWith('3')
|| name.StartsWith('4')
|| name.StartsWith('5')
|| name.StartsWith('6')
|| name.StartsWith('7')
|| name.StartsWith('8')
|| name.StartsWith('9'))
{
base.QuoteName = true;
}
base.WritePropertyName(name);
base.QuoteName = false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment