Formatfehler
Da JSON nur UTF-8-codierte Zeichen akzeptiert, müssen die Parameter von json_encode() UTF-8 sein Codierung, andernfalls erhalten Sie ein Nullzeichen oder null. Wenn Chinesisch die GB2312-Kodierung verwendet oder Fremdsprachen die ISO-8859-1-Kodierung verwenden, sollte diesem Punkt besondere Aufmerksamkeit gewidmet werden.
$bad_json = "{ 'bar': 'baz' }"; $bad_json = '{ bar: "baz" }'; $bad_json = '{ "bar": "baz", }';
Das Ausführen von json_decode() für diese drei Zeichenfolgen gibt null zurück und meldet einen Fehler.
Der erste Fehler besteht darin, dass das JSON-Trennzeichen nur die Verwendung von doppelten Anführungszeichen und nicht von einfachen Anführungszeichen zulässt. Der zweite Fehler besteht darin, dass der „Name“ (der Teil links vom Doppelpunkt) des JSON-Name-Wert-Paares auf jeden Fall doppelte Anführungszeichen verwenden muss. Der dritte Fehler besteht darin, dass Sie nach dem letzten Wert kein abschließendes Komma hinzufügen können.
Darüber hinaus kann json nur zur Darstellung von Objekten und Arrays verwendet werden. Wenn json_decode() für eine Zeichenfolge oder einen Wert verwendet wird, wird null zurückgegeben.
Das Format ist korrekt, es wird jedoch ein Fehler gemeldet
Der erste Typ, Zeichenkodierungsproblem
Da JSON nur UTF-8-kodierte Zeichen akzeptiert , also Die Parameter von json_encode() müssen UTF-8-codiert sein, sonst erhalten Sie Nullzeichen oder Null. Wenn Chinesisch die GB2312-Kodierung verwendet oder Fremdsprachen die ISO-8859-1-Kodierung verwenden, sollte diesem Punkt besondere Aufmerksamkeit gewidmet werden.
Die zweite Art von BOM-Problem
Der BOM-Header wird auch als UTF-8-Signatur bezeichnet. Tatsächlich hat der UTF-8-BOM keine Auswirkung auf UFT-8 -16 und UTF-32. Die BOM-Signatur bedeutet, dem Editor mitzuteilen, welche Codierung die aktuelle Datei verwendet, um die Identifizierung des Editors zu erleichtern. Obwohl die BOM nicht im Editor angezeigt wird, wird nur eine Ausgabe generiert Wie eine zusätzliche Leerzeile: Wenn der PHP-Code mit Software wie Notepad bearbeitet und gespeichert wird, werden beim Speichern einer in UTF-8 codierten Datei am Anfang drei unsichtbare Zeichen (0xEF, 0xBB, 0xBF oder BOM) eingefügt die Datei. Dabei handelt es sich um eine Zeichenfolge versteckter Zeichen, mit der Editoren wie Notepad erkennen können, ob die Datei in UTF-8 codiert ist. (Es ist unklar, warum der Stücklistenkopf bei der Rückgabe von Daten automatisch hinzugefügt wird.)
/** * 去除bom报头 */ public static String formatString(String s) { if (s != null) { s = s.replaceAll("\ufeff", ""); } return s; }
Das obige ist der detaillierte Inhalt vonWas bedeutet ein JSON-Formatfehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!