PHP 8.6: JSON-Fehlerposition beim Decoding
PHP 8.6 bringt eine kleine, aber nützliche Verbesserung beim JSON-Decoding: Bei einem Parsing-Fehler lässt sich jetzt die exakte Fehlerposition ermitteln. Das beschleunigt das Debugging fehlerhafter Payloads deutlich.
Eine kleine, aber praktische JSON-Verbesserung
Wenn json_decode() fehlschlägt, hat PHP bisher zwar mitgeteilt, dass etwas schiefgelaufen ist — aber nicht wo im Input das Problem lag. Mit PHP 8.6 ändert sich das: Für fehlgeschlagenes JSON-Decoding lässt sich die Fehlerposition abrufen, sodass sich fehlerhafte Payloads schneller eingrenzen lassen.
Das ist besonders hilfreich, wenn du mit API-Payloads, Webhooks oder Konfigurationsdateien arbeitest, bei denen schon ein fehlendes Anführungszeichen oder Komma das gesamte Dokument ungültig machen kann.
Vorher und nachher
Vor PHP 8.6 musstest du den rohen JSON-Text meist manuell prüfen oder die Payload loggen und die Ursache selbst suchen:
$json = '{"name": "Alice", "age": 30,}';
data = json_decode($json, true);
if ($data === null && json_last_error() !== JSON_ERROR_NONE) {
echo json_last_error_msg();
}
Die Meldung sagt dir, dass ein Syntaxfehler vorliegt, aber nicht, wo er passiert ist.
Mit PHP 8.6 kannst du zusätzlich die Fehlerposition abfragen und das Problem schneller lokalisieren:
$json = '{"name": "Alice", "age": 30,}';
$data = json_decode($json, true);
if ($data === null && json_last_error() !== JSON_ERROR_NONE) {
echo json_last_error_msg() . PHP_EOL;
echo 'Error position: ' . json_last_error_pos();
// Syntax error
// Error position: 28
}
Diese Position kannst du nutzen, um die umliegenden Zeichen in der Payload zu prüfen und den Fehler sofort zu erkennen.
Warum das wichtig ist
Das ist kein spektakuläres Feature, aber genau die Art von Verbesserung, die sich im täglichen Debugging auszahlt:
schnellere Diagnose fehlerhafter JSON-Daten
weniger Zeit bei der Suche in großen Payloads
bessere Logs und Observability bei API-Integrationen
Wenn deine Anwendung regelmäßig externes JSON verarbeitet, kann dir diese kleine Ergänzung überraschend viel Zeit sparen.