/// <summary>Deserializes a JSON string to a <see cref="JsonSchema4" />.</summary> /// <param name="data">The JSON string.</param> /// <param name="documentPath">The document path (URL or file path) for resolving relative document references.</param> /// <param name="referenceResolverFactory">The JSON reference resolver factory.</param> /// <returns>The JSON Schema.</returns> public static async Task <JsonSchema4> FromJsonAsync(string data, string documentPath, Func <JsonSchema4, JsonReferenceResolver> referenceResolverFactory) { data = JsonSchemaReferenceUtilities.ConvertJsonReferences(data); var settings = new JsonSerializerSettings { ContractResolver = CreateJsonSerializerContractResolver(SchemaType.JsonSchema), MetadataPropertyHandling = MetadataPropertyHandling.Ignore, ConstructorHandling = ConstructorHandling.Default, ReferenceLoopHandling = ReferenceLoopHandling.Serialize, PreserveReferencesHandling = PreserveReferencesHandling.Objects }; JsonSchemaSerializationContext.CurrentSchemaType = SchemaType.JsonSchema; var schema = JsonConvert.DeserializeObject <JsonSchema4>(data, settings); schema.DocumentPath = documentPath; var referenceResolver = referenceResolverFactory(schema); if (!string.IsNullOrEmpty(documentPath)) { referenceResolver.AddDocumentReference(documentPath, schema); } await JsonSchemaReferenceUtilities.UpdateSchemaReferencesAsync(schema, referenceResolver).ConfigureAwait(false); return(schema); }
/// <summary>Serializes the <see cref="JsonSchema4" /> to a JSON string.</summary> /// <returns>The JSON string.</returns> public string ToJson() { var oldSchema = SchemaVersion; SchemaVersion = "http://json-schema.org/draft-04/schema#"; JsonSchemaReferenceUtilities.UpdateSchemaReferencePaths(this, false); var json = JsonSchemaReferenceUtilities.ConvertPropertyReferences(JsonConvert.SerializeObject(this, Formatting.Indented)); SchemaVersion = oldSchema; return(json); }
/// <summary>Deserializes a JSON string to a <see cref="JsonSchema4"/>. </summary> /// <param name="data">The JSON string. </param> /// <returns></returns> public static JsonSchema4 FromJson(string data) { data = JsonSchemaReferenceUtilities.ConvertJsonReferences(data); var schema = JsonConvert.DeserializeObject <JsonSchema4>(data, new JsonSerializerSettings { ConstructorHandling = ConstructorHandling.Default, ReferenceLoopHandling = ReferenceLoopHandling.Serialize, PreserveReferencesHandling = PreserveReferencesHandling.Objects }); JsonSchemaReferenceUtilities.UpdateSchemaReferences(schema); return(schema); }
/// <summary>Serializes the <see cref="JsonSchema4" /> to a JSON string.</summary> /// <param name="typeNameGenerator">The type name generator.</param> /// <returns>The JSON string.</returns> public string ToJson(ITypeNameGenerator typeNameGenerator) { var oldSchema = SchemaVersion; SchemaVersion = "http://json-schema.org/draft-04/schema#"; JsonSchemaReferenceUtilities.UpdateSchemaReferencePaths(this, new JsonSchemaDefinitionAppender(this, typeNameGenerator)); var data = JsonConvert.SerializeObject(this, Formatting.Indented); JsonSchemaReferenceUtilities.UpdateSchemaReferences(this, new JsonReferenceResolver()); SchemaVersion = oldSchema; return(JsonSchemaReferenceUtilities.ConvertPropertyReferences(data)); }
/// <summary>Serializes the <see cref="JsonSchema4" /> to a JSON string.</summary> /// <returns>The JSON string.</returns> public string ToJson() { var oldSchema = SchemaVersion; SchemaVersion = "http://json-schema.org/draft-04/schema#"; var contractResolver = CreateJsonSerializerContractResolver(SchemaType.JsonSchema); JsonSchemaSerializationContext.CurrentSchemaType = SchemaType.JsonSchema; JsonSchemaReferenceUtilities.UpdateSchemaReferencePaths(this, false, contractResolver); var json = JsonConvert.SerializeObject(this, Formatting.Indented, new JsonSerializerSettings { ContractResolver = contractResolver }); SchemaVersion = oldSchema; return(JsonSchemaReferenceUtilities.ConvertPropertyReferences(json)); }
/// <summary>Deserializes a JSON string to a <see cref="JsonSchema4"/>. </summary> /// <param name="data">The JSON string. </param> /// <param name="documentPath">The document path (URL or file path) for resolving relative document references.</param> /// <param name="jsonReferenceResolver">The JSON document resolver.</param> /// <returns>The JSON Schema.</returns> public static JsonSchema4 FromJson(string data, string documentPath, JsonReferenceResolver jsonReferenceResolver) { data = JsonSchemaReferenceUtilities.ConvertJsonReferences(data); var schema = JsonConvert.DeserializeObject <JsonSchema4>(data, new JsonSerializerSettings { ConstructorHandling = ConstructorHandling.Default, ReferenceLoopHandling = ReferenceLoopHandling.Serialize, PreserveReferencesHandling = PreserveReferencesHandling.Objects }); schema.DocumentPath = documentPath; if (jsonReferenceResolver != null && !string.IsNullOrEmpty(documentPath)) { jsonReferenceResolver.AddDocumentReference(documentPath, schema); } JsonSchemaReferenceUtilities.UpdateSchemaReferences(schema, jsonReferenceResolver); return(schema); }
/// <summary>Deserializes a JSON string to a <see cref="JsonSchema4" />.</summary> /// <param name="data">The JSON string.</param> /// <param name="documentPath">The document path (URL or file path) for resolving relative document references.</param> /// <param name="referenceResolverFactory">The JSON reference resolver factory.</param> /// <returns>The JSON Schema.</returns> public static async Task <JsonSchema4> FromJsonAsync(string data, string documentPath, Func <JsonSchema4, JsonReferenceResolver> referenceResolverFactory) { data = JsonSchemaReferenceUtilities.ConvertJsonReferences(data); var schema = JsonConvert.DeserializeObject <JsonSchema4>(data, new JsonSerializerSettings { ConstructorHandling = ConstructorHandling.Default, ReferenceLoopHandling = ReferenceLoopHandling.Serialize, PreserveReferencesHandling = PreserveReferencesHandling.Objects }); schema.DocumentPath = documentPath; var referenceResolver = referenceResolverFactory(schema); if (!string.IsNullOrEmpty(documentPath)) { referenceResolver.AddDocumentReference(documentPath, schema); } await JsonSchemaReferenceUtilities.UpdateSchemaReferencesAsync(schema, referenceResolver).ConfigureAwait(false); return(schema); }