snappymcsnap
snappymcsnap

Reputation: 2103

How do I output JSchema without the formatting?

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

Answers (1)

dbc
dbc

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

Related Questions