JSON zu validieren bedeutet zu bestätigen, dass eine Zeichenkette syntaktisch korrekt ist (die JSON-Grammatik einhält) und optional strukturell korrekt (zu der Form passt, die Ihre Anwendung erwartet). Dieser Guide zeigt, wie Sie JSON in JavaScript, Python, auf der Kommandozeile und im Browser validieren —— und erklärt den entscheidenden Unterschied zwischen Syntax- und Schema-Validierung.
Zwei Arten der JSON-Validierung
Bevor Sie etwas validieren, entscheiden Sie, welche Frage Sie tatsächlich stellen:
- Syntax-Validierung —— „ist das überhaupt gültiges JSON?“ Prüft Anführungszeichen, Kommas, Klammern und Werttypen gegen die JSON-Grammatik.
JSON.parse()erledigt das. - Schema-Validierung —— „hat dieses JSON die richtigen Felder, Typen und Einschränkungen?“ Prüft, dass
ideine Ganzzahl ist, dassemailvorhanden ist usw. Benötigt JSON Schema und einen Validator wie Ajv.
Die meisten Suchen nach „validate JSON“ meinen Syntax-Validierung —— damit fangen wir an.
JSON in JavaScript validieren
Die einfachste und zuverlässigste Syntax-Prüfung ist der Versuch zu parsen und den Fehler abzufangen. JSON.parse() wirft einen SyntaxError bei jeder ungültigen Eingabe:
function isValidJson(text) {
try {
JSON.parse(text);
return true;
} catch {
return false;
}
}
isValidJson('{"name":"Ada"}'); // true
isValidJson("{'name':'Ada'}"); // false —— einfache Anführungszeichen
isValidJson('{"a":1,}'); // false —— Trailing CommaWenn Sie den Grund des Fehlschlags brauchen, fangen Sie die Fehlermeldung ab —— sie enthält meist die Position:
function validateJson(text) {
try {
return { valid: true, value: JSON.parse(text) };
} catch (err) {
return { valid: false, error: err.message };
}
}
validateJson('{"a":1,}');
// { valid: false, error: "Expected double-quoted property name in JSON at position 7" }Verwenden Sie keine regulären Ausdrücke zur JSON-Validierung. JSON ist eine rekursive Grammatik und kann mit Regex nicht korrekt validiert werden —— JSON.parse() ist der kanonische Validator und ist bereits in jeder JavaScript-Laufzeit eingebaut.
JSON in Python validieren
Pythons json.loads() wirft json.JSONDecodeError bei ungültiger Eingabe mit exakter Zeile und Spalte:
import json
def is_valid_json(text):
try:
json.loads(text)
return True
except json.JSONDecodeError as e:
print(f"Invalid JSON: {e.msg} at line {e.lineno} column {e.colno}")
return False
is_valid_json('{"name": "Ada"}') # True
is_valid_json('{"name": "Ada",}') # False —— Trailing CommaEine JSON-Datei auf der Kommandozeile validieren
Mit jq
jq beendet sich mit Exit-Code ungleich Null, wenn die Eingabe kein gültiges JSON ist —— ideal für Skripte und CI:
# Gibt nichts aus und Exit 0 bei gültig; gibt Fehler aus und Exit ungleich Null sonst
jq empty data.json && echo "valid" || echo "invalid"Mit Python (ohne Installation)
python3 -m json.tool data.json > /dev/null && echo "valid"In einer CI-Pipeline
Validieren Sie alle JSON-Dateien des Repos als Pre-Commit- oder CI-Schritt, damit fehlerhafte Konfiguration nie in Produktion gelangt:
# Build fehlschlagen, wenn irgendeine .json ungültig ist
find . -name '*.json' -not -path './node_modules/*' \
-exec sh -c 'jq empty "$1" || exit 255' _ {} \;JSON im Browser validieren
Für eine schnelle Prüfung ohne Code schreiben Sie Ihr JSON in den JSON-Validator von fixjson. Er meldet die exakte Zeile und Position jedes Syntaxfehlers beim Tippen, und alles läuft lokal —— nichts wird an den Server gesendet, also sicher für sensible Payloads. Wenn das JSON kaputt ist und Sie es lieber reparieren statt nur markieren möchten, behebt JSON Fix häufige Fehler automatisch.
Über Syntax hinaus: Struktur mit JSON Schema validieren
Syntaktisch gültiges JSON kann immer noch falsch für Ihre Anwendung sein —— ein fehlendes Pflichtfeld, ein String, wo Sie eine Zahl erwarteten, ein Wert außerhalb des Bereichs. Um Struktur zu erzwingen, beschreiben Sie die erwartete Form mit JSON Schema und validieren Sie mit Ajv (JavaScript) oder der Bibliothek jsonschema (Python):
import Ajv from 'ajv';
const ajv = new Ajv();
const validate = ajv.compile({
type: 'object',
required: ['id', 'email'],
properties: {
id: { type: 'integer' },
email: { type: 'string' },
},
});
validate({ id: 42, email: 'a@b.com' }); // true
validate({ id: '42' }); // false —— falscher Typ, kein email
// validate.errors enthält die DetailsSchema-Validierung auf der Kommandozeile
Für CI-Prüfungen von JSON gegen ein Schema decken zwei CLIs fast alles ab:
# Python —— einmal installieren und validieren
pip install jsonschema
jsonschema --instance data.json schema.json && echo OK
# Node —— Ajv als CLI
npm i -g ajv-cli ajv-formats
ajv validate -c ajv-formats -s schema.json -d "data.*.json"JSON bei jedem Commit validieren (Pre-Commit-Hook)
Um zu verhindern, dass unvalidiertes JSON committet wird, koppeln Sie einen Hook mit husky + lint-staged:
// package.json
{
"lint-staged": {
"*.json": [
"jq empty",
"ajv validate -s schemas/$name.schema.json -d"
]
}
}
# Hook installieren
npx husky add .husky/pre-commit "npx lint-staged" Für Python-Projekte enthält das offizielle Framework pre-commit einen Hook check-json, der json.loads auf jede gestagete Datei ausführt.
Häufige JSON-Validierungsfehler
Wenn die Validierung fehlschlägt, ist die Ursache meist eine von diesen —— jede hat einen eigenen Guide:
- Trailing Commas nach dem letzten Element
- Einfache Anführungszeichen statt doppelter oder unzitierte Schlüssel
- Unexpected-token-Fehler (HTML-Antworten,
undefined, Kommentare) - Unexpected end of input durch abgeschnittenes oder ungeschlossenes JSON
- „[object Object] is not valid JSON“ wenn ein Objekt vor dem Parsen stringifiziert wird
Häufig gestellte Fragen
Wie prüfe ich, ob eine Zeichenkette gültiges JSON ist?
Übergeben Sie sie an JSON.parse() innerhalb von try/catch (JavaScript) oder an json.loads() innerhalb von try/except (Python). Wenn es nicht wirft, ist es gültig. Für eine codefreie Prüfung verwenden Sie einen Browser-Validator.
Kann ich JSON mit einem regulären Ausdruck validieren?
Nein. JSON ist eine rekursive Grammatik, die sich nicht mit Regex ausdrücken lässt. Verwenden Sie immer einen echten Parser wie JSON.parse().
Was ist der Unterschied zwischen Validieren und Parsen von JSON?
Parsen wandelt Text in einen nutzbaren Wert um; Validieren bestätigt nur, dass es geparst werden könnte. In der Praxis ist ein erfolgreiches Parsen die Validierung —— es ist dieselbe Operation, Sie verwerfen einfach das Ergebnis, wenn Sie nur an der Gültigkeit interessiert sind.
Wie validiere ich JSON gegen ein Schema?
Verwenden Sie JSON Schema mit Ajv (JavaScript) oder der Bibliothek jsonschema (Python). Schema-Validierung prüft Typen, Pflichtfelder und Einschränkungen —— nicht nur Syntax.
JSON jetzt validieren —— ohne Installation
Fügen Sie Ihr JSON in den JSON-Validator ein, um Syntaxfehler sofort mit exakter Zeile und Position hervorgehoben zu sehen. Alles läuft im Browser; keine Daten verlassen Ihren Rechner.
- JSON-Validator —— Syntax im Browser sofort prüfen
- JSON Fix —— repariert ungültiges JSON, statt es nur zu markieren
- Was ist JSON Schema? —— validiert Struktur und Typen, nicht nur Syntax
- Was ist JSON? —— die Grammatikregeln, die JSON gültig oder ungültig machen