Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

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?

question from:https://stackoverflow.com/questions/66051556/how-do-i-output-jschema-without-the-formatting

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
901 views
Welcome To Ask or Share your Answers For Others

1 Answer

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...