如何在没有格式化的情况下输出 JSchema?
How do I output JSchema without the formatting?
使用原始的 JSON.NET 包很容易做到这一点,您只需将 Formatting.None 传递给 ToString() 方法即可d 得到一个很好的压缩输出。 JSchema 没有类似的选项吗?
给定一个 JSchema schema
,要获得紧凑的格式,您可以这样做:
var json = JsonConvert.SerializeObject(schema, Formatting.None);
或
using var sw = new StringWriter(CultureInfo.InvariantCulture);
using (var jsonWriter = new JsonTextWriter(sw) { Formatting = Formatting.None })
schema.WriteTo(jsonWriter);
var json = sw.ToString();
后者可以做成扩展方法,可选地采用 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();
}
}
然后你可以这样做:
var unversionedSchema = schema.ToString(Formatting.None);
var versionedSchema = schema.ToString(Formatting.None, new JSchemaWriterSettings { Version = SchemaVersion.Draft7 } );
演示 fiddle here.
使用原始的 JSON.NET 包很容易做到这一点,您只需将 Formatting.None 传递给 ToString() 方法即可d 得到一个很好的压缩输出。 JSchema 没有类似的选项吗?
给定一个 JSchema schema
,要获得紧凑的格式,您可以这样做:
var json = JsonConvert.SerializeObject(schema, Formatting.None);
或
using var sw = new StringWriter(CultureInfo.InvariantCulture);
using (var jsonWriter = new JsonTextWriter(sw) { Formatting = Formatting.None })
schema.WriteTo(jsonWriter);
var json = sw.ToString();
后者可以做成扩展方法,可选地采用 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();
}
}
然后你可以这样做:
var unversionedSchema = schema.ToString(Formatting.None);
var versionedSchema = schema.ToString(Formatting.None, new JSchemaWriterSettings { Version = SchemaVersion.Draft7 } );
演示 fiddle here.