public override bool IsValid(JsonSchemaDefinitions definitions, JsonValue value, JsonSchemaCallback callback) { bool succeeded = true; JsonObject target = value as JsonObject; if (target == null) return true; foreach (string property in target.GetKeys()) { if (items.ContainsKey(property)) { JsonPathSegment segment = new JsonPropertySegment(property); JsonSchemaCallback scope = callback.Scope(segment); JsonSchemaRule rule = items[property]; if (rule.IsValid(definitions, target.Get(property), scope) == false) { callback.Add(scope); succeeded = false; } } } return succeeded; }
public override bool IsValid(JsonSchemaDefinitions definitions, JsonValue value, JsonSchemaCallback callback) { bool succeeded = true; JsonObject target = value as JsonObject; if (target == null) return true; foreach (Regex pattern in items.Keys) { foreach (string property in target.GetKeys().Where(x => pattern.IsMatch(x))) { JsonSchemaRule rule = items[pattern]; JsonPathSegment segment = new JsonPropertySegment(property); JsonSchemaCallback scope = callback.Scope(segment); if (rule.IsValid(definitions, target.Get(property), callback) == false) { callback.Add(scope); succeeded = false; } } } return succeeded; }
public override bool IsValid(JsonSchemaDefinitions definitions, JsonValue value, JsonSchemaCallback callback) { JsonObject target = value as JsonObject; if (target == null) return true; bool succeeded = true; List<string> left = new List<string>(target.GetKeys()); foreach (string property in properties) left.Remove(property); foreach (Regex pattern in patterns) left.RemoveAll(pattern.IsMatch); if (left.Count == 0) return true; if (rule == null && left.Count > 0) { foreach (string property in left) callback.Fail(new JsonPropertySegment(property), value, "The presence of any additional property is not allowed."); return false; } if (rule != null) { foreach (string property in left) { JsonPathSegment segment = new JsonPropertySegment(property); JsonSchemaCallback scope = callback.Scope(segment); if (rule.IsValid(definitions, target.Get(property), scope) == false) { callback.Add(scope); succeeded = false; } } } return succeeded; }
public override bool IsValid(JsonSchemaDefinitions definitions, JsonValue value, JsonSchemaCallback callback) { bool succeeded = true; JsonObject target = value.As<JsonObject>(); if (target == null) return true; foreach (string property in byName.Keys) if (target.Contains(property)) foreach (string dependency in byName[property]) if (target.Contains(dependency) == false) { JsonPathSegment segment = new JsonPropertySegment(property); callback.Fail(segment, value, $"The dependency is not valid. Missing property: {dependency}."); succeeded = false; } foreach (string property in byRule.Keys) { if (target.Contains(property)) { JsonSchemaRule rule = byRule[property]; JsonPathSegment segment = new JsonPropertySegment(property); JsonSchemaCallback scope = callback.Scope(segment); if (rule.IsValid(definitions, value, scope) == false) { callback.Add(scope); succeeded = false; } } } return succeeded; }