/// <summary> /// Provides the validation logic for this dependency. /// </summary> /// <param name="context">The context object.</param> /// <returns>Results object containing a final result and any errors that may have been found.</returns> public SchemaValidationResults Validate(SchemaValidationContext context) { var results = new SchemaValidationResults(PropertyName, context) { Keyword = $"{context.Misc["dependencyParent"]}/{PropertyName}" }; if (context.Instance.Type != JsonValueType.Object) { Log.Schema("Instance not an object; not applicable"); return(results); } if (!context.Instance.Object.ContainsKey(PropertyName)) { Log.Schema($"Property {PropertyName} not found; not applicable"); return(results); } var newContext = new SchemaValidationContext(context) { BaseRelativeLocation = context.BaseRelativeLocation?.CloneAndAppend(PropertyName), RelativeLocation = context.RelativeLocation.CloneAndAppend(PropertyName), }; var nestedResult = _schema.Validate(newContext); results.NestedResults = new List <SchemaValidationResults> { nestedResult }; if (!nestedResult.IsValid) { Log.Schema($"Property {PropertyName} found, but subschema failed"); results.IsValid = false; results.ErrorMessage = ErrorTemplate; } return(results); }
public static string ValidateJson(string jsonText, string schemaText) { var serializer = new Manatee.Json.Serialization.JsonSerializer(); var json = Manatee.Json.JsonValue.Parse(jsonText); var schemaJson = Manatee.Json.JsonValue.Parse(schemaText); var schema = new Manatee.Json.Schema.JsonSchema(); schema.FromJson(schemaJson, serializer); Manatee.Json.Schema.JsonSchemaOptions.OutputFormat = Manatee.Json.Schema.SchemaValidationOutputFormat.Basic; var validationResults = schema.Validate(json); if (!validationResults.IsValid) { json = serializer.Serialize(validationResults); return(JsonHelper.FormatJson(json.ToString())); } else { return(""); } }