Reputation: 2103
This was really easy to do with the original JSON.NET package, you'd just pass Formatting.None to the ToString() method and you'd get a nice condensed output. Is there not a similar option for JSchema?
Upvotes: 1
Views: 328
Reputation: 116876
Given a JSchema schema
, to get compact formatting, you can do:
var json = JsonConvert.SerializeObject(schema, Formatting.None);
Or
using var sw = new StringWriter(CultureInfo.InvariantCulture);
using (var jsonWriter = new JsonTextWriter(sw) { Formatting = Formatting.None })
schema.WriteTo(jsonWriter);
var json = sw.ToString();
The latter could be made into an extension method, optionally taking a JSchemaWriterSettings
:
public static partial class JsonExtensions
{
public static string ToString(this JSchema schema, Formatting formatting, JSchemaWriterSettings settings = default)
{
using var sw = new StringWriter(CultureInfo.InvariantCulture);
using (var jsonWriter = new JsonTextWriter(sw) { Formatting = formatting })
if (settings == null)
schema.WriteTo(jsonWriter);
else
schema.WriteTo(jsonWriter, settings); // This overload throws if settings is null
return sw.ToString();
}
}
And then you could do:
var unversionedSchema = schema.ToString(Formatting.None);
var versionedSchema = schema.ToString(Formatting.None, new JSchemaWriterSettings { Version = SchemaVersion.Draft7 } );
Demo fiddle here.
Upvotes: 2