- name
- json-utils
- description
- Robust JSON parsing and validation with Pydantic schemas, JSON Schema validation, batch processing, and automatic JSON repair for LLM outputs. Use when Codex needs to (1) Parse JSON from unreliable LLM outputs with common errors like trailing commas or markdown code blocks, (2) Validate JSON against Pydantic models or JSON Schema, (3) Process multiple JSON files or JSON-Lines (NDJSON) in batch, (4) Extract JSON from mixed text content, (5) Safely parse tool call outputs with fallback handling, or for any JSON processing where robustness, batch processing, and error recovery are needed.
JSON Utils
Robuste JSON-Verarbeitung mit Pydantic-Validierung, JSON Schema Support und automatischer JSON-Reparatur.
Erweiterte Nutzung
Für WebSearch-Integration und Multi-Environment JSON-Verarbeitung siehe:
../scripting-utils/- Kombiniert JSON-Utils mit WebSearch für API-Dokumentation und Response-Validierung
Module
Installation
pip install pydantic json-repair jsonschemaModule
| Script | Zweck |
|---|---|
json_processor.py | Kern-Funktionen: Parsing, Validierung, Tool-Calls |
json_schema_validator.py | JSON Schema Draft 7/2020-12 Validierung |
json_batch_processor.py | Batch-Verarbeitung & JSON-Lines (NDJSON) |
validate_tool_output.py | CLI für Tool-Output Validierung |
Quick Start
from json_processor import parse_json, parse_and_validate, validate_tool_call
from pydantic import BaseModel
# Einfaches Parsing mit Auto-Reparatur
result = parse_json('{"name": "test", "value": 123,}') # trailing comma OK
# Mit Pydantic-Validierung
class ToolCall(BaseModel):
tool: str
arguments: dict = {}
llm_output = '{"tool": "search", "arguments": {"q": "hello"},}'
validated = parse_and_validate(llm_output, ToolCall)Integration mit scripting-utils
# Für erweiterte JSON-Verarbeitung mit WebSearch:
from scripting_utils.json_websearch import WebSearchJSON
# Sucht API-Doku, validiert Responses, generiert Schemas
ws = WebSearchJSON()
result = ws.search_and_validate(
query="github api repos endpoint",
schema_path="github_schema.json"
)Siehe ../scripting-utils/scripts/json_websearch.py für:
- API-Dokumentation via WebSearch
- Auto-Generierung von JSON-Schemas
- Batch-Validierung von API-Endpoints
- Cross-Platform JSON-Verarbeitung
Szenarien
1. LLM-Output verarbeiten
from json_processor import parse_json
# Verschiedene Input-Formate
parse_json('{"valid": true}') # Direkt OK
parse_json('```json\
{"valid": true}\parse_json('{"valid": true,}') # Trailing comma repariert parse_json('Some text {"tool": "x"} more text') # JSON aus Text extrahiert
### 2. JSON Schema Validierung
from json_schema_validator import validate_with_jsonschema, SchemaBuilder
Gegen Datei validieren
validate_with_jsonschema(data, "/path/to/schema.json")
Dynamisches Schema erstellen
schema = SchemaBuilder.object( properties={ "name": SchemaBuilder.string(min_length=1), "age": SchemaBuilder.integer(minimum=0), "tags": SchemaBuilder.array(SchemaBuilder.string()) }, required=["name"] )
### 3. Batch-Verarbeitung
from json_batch_processor import process_file_batch, process_jsonl_file from pathlib import Path
Mehrere JSON-Dateien parallel
results = process_file_batch( [Path("a.json"), Path("b.json"), Path("c.json")], repair=True, max_workers=4 )
JSON-Lines (NDJSON) verarbeiten
results = process_jsonl_file(Path("data.jsonl"))
for result in results: if result.success: print(f"[{result.source}] OK: {result.data}") else: print(f"[{result.source}] ERROR: {result.error}")
### 4. JSON-Lines verarbeiten
Konvertiere JSON-Array zu JSON-Lines
python json_batch_processor.py data/*.json --output output.jsonl
JSON-Lines validieren
python json_batch_processor.py data.jsonl --jsonl --repair
### 5. Tool-Call validieren
from json_processor import validate_tool_call
result = validate_tool_call('{"tool": "weather", "arguments": {"city": "Berlin"}}')
Mit Tool-Namensprüfung
try: result = validate_tool_call(raw_json, tool_name="weather") except JSONValidationError: pass # Falscher Tool-Name
## CLI-Nutzung
### Einzelnes JSON:Datei parsen
python scripts/json_processor.py -f output.json --pretty
String parsen mit Reparatur
python scripts/json_processor.py '{"test": 123,}' --repair --pretty
### JSON Schema Validierung:python scripts/json_schema_validator.py input.json -s schema.json
### Batch-Verarbeitung:Mehrere Dateien
python scripts/json_batch_processor.py *.json --workers 8
JSON-Lines
python scripts/json_batch_processor.py data.jsonl --jsonl --output results.jsonl
Nur Summary
python scripts/json_batch_processor.py *.json --summary
## API-Dokumentation
Siehe [references/api_reference.md](references/api_reference.md) für vollständige API-Dokumentation.
## Exception-Hierarchie
JSONProcessingError (Base) ├── JSONValidationError (Pydantic/Schema-Fehler) │ └── SchemaValidationError (JSON Schema spezifisch) └── JSONRepairError (Reparatur nicht möglich)
## Häufige Fehler repariert
- ✅ Trailing commas: `{"a": 1,}` → `{"a": 1}`
- ✅ Markdown-Blocks: `\`\`\`json\
{}\
\`\`\`` → `{}`
- ✅ JavaScript-Kommentare: `{"a": 1} // comment` → `{"a": 1}`
- ✅ Unescaped newlines in Strings
- ✅ Einzelne statt doppelte Anführungszeichen