spark: add quick JSON schema validator utility
This commit is contained in:
1 parent
f1c87e7a9f
commit
505ff787be
1 file changed
+45
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Quick JSON schema validator: validates a JSON file against a schema file.
|
||||
|
||||
Usage: python validate_json_schema.py <data.json> <schema.json>
|
||||
Exit 0 if valid, 1 if invalid, 2 on error.
|
||||
|
||||
Example:
|
||||
echo '{"type":"object","properties":{"name":{"type":"string"}}}' > schema.json
|
||||
echo '{"name":"test"}' > data.json
|
||||
python validate_json_schema.py data.json schema.json # exits 0
|
||||
"""
|
||||
import json
|
||||
import sys
|
||||
from jsonschema import validate, ValidationError, SchemaError
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 3:
|
||||
print("Usage: validate_json_schema.py <data.json> <schema.json>", file=sys.stderr)
|
||||
sys.exit(2)
|
||||
|
||||
try:
|
||||
with open(sys.argv[1], 'r') as f:
|
||||
data = json.load(f)
|
||||
with open(sys.argv[2], 'r') as f:
|
||||
schema = json.load(f)
|
||||
except FileNotFoundError as e:
|
||||
print(f"Error: {e}", file=sys.stderr)
|
||||
sys.exit(2)
|
||||
except json.JSONDecodeError as e:
|
||||
print(f"Error: Invalid JSON - {e}", file=sys.stderr)
|
||||
sys.exit(2)
|
||||
|
||||
try:
|
||||
validate(instance=data, schema=schema)
|
||||
print("Valid: JSON conforms to schema")
|
||||
sys.exit(0)
|
||||
except ValidationError as e:
|
||||
print(f"Invalid: {e.message}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
except SchemaError as e:
|
||||
print(f"Invalid schema: {e.message}", file=sys.stderr)
|
||||
sys.exit(2)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in new issue
Block a user