spark: add JSON key validator utility
This commit is contained in:
1 parent
9c272c7c83
commit
43af771627
1 file changed
+50
@@ -0,0 +1,50 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""
|
||||||
|
JSON Key Validator - Verifies JSON files contain expected keys.
|
||||||
|
Usage: python json_key_validator.py <json_file> <key1,key2,...>
|
||||||
|
Exit 0: all keys present
|
||||||
|
Exit 1: missing keys
|
||||||
|
Exit 2: file error
|
||||||
|
"""
|
||||||
|
import sys
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
def validate_json_keys(filepath: str, expected_keys: list) -> tuple[bool, list]:
|
||||||
|
"""Validate that a JSON file contains all expected keys."""
|
||||||
|
with open(filepath, 'r') as f:
|
||||||
|
data = json.load(f)
|
||||||
|
|
||||||
|
if not isinstance(data, dict):
|
||||||
|
return False, ["JSON root is not an object"]
|
||||||
|
|
||||||
|
missing = [k for k in expected_keys if k not in data]
|
||||||
|
return len(missing) == 0, missing
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if len(sys.argv) != 3:
|
||||||
|
print("Usage: python json_key_validator.py <json_file> <key1,key2,...>")
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
filepath = sys.argv[1]
|
||||||
|
expected_keys = [k.strip() for k in sys.argv[2].split(',')]
|
||||||
|
|
||||||
|
try:
|
||||||
|
valid, missing = validate_json_keys(filepath, expected_keys)
|
||||||
|
if valid:
|
||||||
|
print(f"PASS: All {len(expected_keys)} keys present in {filepath}")
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
print(f"FAIL: Missing keys in {filepath}: {missing}")
|
||||||
|
sys.exit(1)
|
||||||
|
except FileNotFoundError:
|
||||||
|
print(f"ERROR: File not found: {filepath}")
|
||||||
|
sys.exit(2)
|
||||||
|
except json.JSONDecodeError as e:
|
||||||
|
print(f"ERROR: Invalid JSON: {e}")
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in new issue
Block a user