PHP 8.6: JSON-Fehlerposition beim Decoding

· Oskar Stark · Expertise · 1 Minute zum Lesen
Abstract editorial illustration of PHP 8.6 JSON parsing with a highlighted error position and subtle purple accents

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.

Sources

Brauchen Sie Hilfe bei PHP-Upgrades?

Wenn Sie ein PHP-Upgrade planen oder Ihre Symfony- und PHP-Anwendungen wartungsfreundlicher machen möchten, unterstützt SensioLabs Deutschland Sie mit Reviews, Workshops und praxisnaher Hilfe.

Das könnte dich auch interessieren

Large tree under the sunlight
Mathieu Santostefano

Vervielfache deine KI-Entwicklungsgeschwindigkeit mit Git Worktrees

Verabschiede dich vom lästigen „Stash-and-Switch“-Dilemma und vom Kontextwechsel. Durch die Kombination von Git Worktrees mit modernen KI-Agenten kannst du jetzt Umgebungen isolieren und Bugfixes parallel beheben, während deine KI im Hintergrund neue Funktionen entwickelt. Das ist ein absoluter Game-Changer für die Developer Experience (DX) und verwandelt deinen Git-Workflow in ein Multithreading-Kraftpaket.

Mehr erfahren : Vervielfache deine KI-Entwicklungsgeschwindigkeit mit Git Worktrees
A man sculpting a rock with PDF written on it
Steven Renaux

Create a Custom Builder – Eine GotenbergBundle Story

In einem vorherigen Artikel haben wir uns angeschaut, wie du mit nur wenigen Zeilen Code dein erstes PDF generierst. Dabei kamen Gotenberg und das GotenbergBundle zum Einsatz – ein Symfony Bundle, das die HTTP API von Gotenberg kapselt, um HTML- oder Office-Dateien in PDFs umzuwandeln oder Screenshots zu erstellen. Das war ein super Anfang. Aber was passiert, wenn deine Applikation viele verschiedene PDFs erzeugen muss, jedes mit eigenem Layout, Style und Daten?

Mehr erfahren : Create a Custom Builder – Eine GotenbergBundle Story
Paper notes on a wall
Imen Ezzine

Ein Blick hinter die Kulissen: 3 kollaborative Zeremonien

Nach einem Post auf LinkedIn dachte ich mir, ich schreibe diesen Artikel, um 3 Zeremonien zu beschreiben, die mich während eines meiner letzten Projekte besonders beeindruckt haben: Event Storming, Example Mapping und Domain Storytelling.

Mehr erfahren : Ein Blick hinter die Kulissen: 3 kollaborative Zeremonien
Why PHP?
Silas Joisten

Warum PHP das Unternehmensweb antreibt und warum diese strategische Entscheidung zählt

PHP gehört weiterhin zu den zuverlässigsten, skalierbarsten und kosteneffizientesten Backend Technologien für Unternehmenssysteme.

Mehr erfahren : Warum PHP das Unternehmensweb antreibt und warum diese strategische Entscheidung zählt
PHP 8.5 URI extension
Oskar Stark

PHP 8.5's neue URI-Erweiterung: Ein Game-Changer für URL-Parsing

PHP 8.5 führt eine leistungsstarke neue URI-Erweiterung ein, die die URL-Verarbeitung modernisiert. Mit Unterstützung für RFC 3986 und WHATWG-Standards bietet die neue Uri-Klasse unveränderliche Objekte, fluent Interfaces und korrekte Validierung - und behebt alle Einschränkungen der veralteten parse_url()-Funktion. Dieser Leitfaden zeigt praktische Vorher/Nachher-Beispiele und erklärt, wann welcher Standard zu verwenden ist.

Mehr erfahren : PHP 8.5's neue URI-Erweiterung: Ein Game-Changer für URL-Parsing
Open in new tab
Silas Joisten

Die Tab-Falle: Warum das Erzwingen neuer Tabs eine schlechte UX ist

Wir haben es alle schon getan — target="_blank" zu einem Link hinzugefügt, um „Benutzern zu helfen", auf unserer Website zu bleiben. Aber was sich wie eine harmlose Bequemlichkeit anfühlt, führt oft zu Verwirrung, beeinträchtigt die Barrierefreiheit und birgt versteckte Sicherheitsrisiken.

Mehr erfahren : Die Tab-Falle: Warum das Erzwingen neuer Tabs eine schlechte UX ist
3 dog heads
Mathieu Santostefano

Lass die Nutzer des SDK ihren eigenen HTTP-Client nutzen

Befreie dich von starren Abhängigkeiten in deinen PHP-SDKs. Erfahre, wie du die Standards PSR-7, PSR-17 und PSR-18 zusammen mit PHP-HTTP/Discovery nutzt, um deinen Benutzern die Verwendung ihres bevorzugten HTTP-Clients zu ermöglichen – sei es Guzzle, Symfony HttpClient oder ein anderes Tool. Ein Muss für PHP- und Symfony-Entwickler.

Mehr erfahren : Lass die Nutzer des SDK ihren eigenen HTTP-Client nutzen
Blue sign on a building with several Now What? letters
Thibaut Chieux

Wie man Nachrichten beim Aufbau asynchroner Anwendungen mit dem Symfony-Messenger priorisiert

Die asynchrone Verarbeitung bietet Vorteile wie entkoppelte Prozesse und schnellere Reaktionszeiten. Die Verwaltung von Nachrichtenprioritäten kann jedoch zu einer Herausforderung werden. Bei Aufgaben, die vom Zurücksetzen von Passwörtern bis hin zu komplexen Exporten reichen, ist die rechtzeitige Zustellung kritischer Nachrichten unerlässlich. Dieser Artikel befasst sich mit häufigen Problemen bei der asynchronen Verarbeitung und zeigt Lösungen mit Symfony Messenger auf, mit denen Sie Ihre Anwendung ohne umfangreiches Refactoring optimieren können.

Mehr erfahren : Wie man Nachrichten beim Aufbau asynchroner Anwendungen mit dem Symfony-Messenger priorisiert