Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
    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("");
        }
    }