JSON-Kodierung schlägt mit einfachen Anführungszeichen fehl: Ein PHP-Rätsel
Wenn Sie die json_encode-Funktion von PHP verwenden, um ein stdClass-Objekt in JSON zu konvertieren, kann es zu Problemen kommen ein rätselhafter Fehler, der zum Verlust von Immobilienwerten führte. Lassen Sie uns dieses Problem untersuchen und eine Lösung finden.
Das gegebene Beispiel zeigt das Verhalten:
<code class="php">$post = new stdClass(); $post->post_title = "Alumnus' Dinner Coming Soon"; // note the single quote $json = json_encode($post); echo $json; // outputs {"ID":"12981","post_title":null,"post_parent":"0","post_date":"2012-01-31 12:00:51"}</code>
Dem resultierenden JSON fehlt die Eigenschaft „post_title“ aufgrund eines Formatierungsproblems mit einfachen Anführungszeichen. Die JSON-Spezifikation schreibt vor, dass einfache Anführungszeichen in Eigenschaftsschlüsseln oder -werten nicht zulässig sind, woran sich json_encode strikt hält.
Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:
1. Stellen Sie die UTF-8-Kodierung sicher:
Datenbankverbindungen müssen die UTF-8-Kodierung angeben, um Daten ordnungsgemäß abzurufen. Abhängig von Ihrer Verbindungsmethode:
2. Einfache Anführungszeichen dekodieren:
Wenn Sie auf ein Problem mit der Zeichenkodierung stoßen, sollten Sie einfache Anführungszeichen explizit dekodieren. Angenommen, Ihre Datenbank gibt „Alumnus? Dinner Coming Soon“ für „post_title“ zurück:
<code class="php">$post->post_title = str_replace("\x92", "'", $post->post_title);</code>
Dadurch wird das fehlerhafte Zeichen in ein gültiges einfaches Anführungszeichen umgewandelt, um die ordnungsgemäße JSON-Kodierung sicherzustellen.
Das obige ist der detaillierte Inhalt vonWarum schlägt „json_encode' von PHP mit einfachen Anführungszeichen in Eigenschaftswerten fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!