Wenn wir PHP zum Konvertieren einer JSON-serialisierten Zeichenfolge in ein Array verwenden, treten manchmal Probleme auf. Eines der häufigsten Probleme sind fehlende Schlüssel im konvertierten Array.
Zum Beispiel verwenden wir den folgenden Code, um Daten aus einem JSON-String abzurufen:
$json_str = '{"name":"John","age":30,"city":"New York"}'; $data = json_decode($json_str, true);
Dieser Code ist eigentlich sehr einfach, er dient dazu, einen JSON-String in eine Assoziation umzuwandeln Array. Manchmal weist das konvertierte Array jedoch nicht die richtigen Schlüsselwerte auf. Dies kann daran liegen, dass die JSON-Zeichenfolge einige unsichtbare Zeichen oder eine unregelmäßige Struktur enthält.
Im Folgenden werden einige Probleme vorgestellt, die dazu führen können, dass Schlüsselwerte nach der Konvertierung fehlen, und entsprechende Lösungen werden angegeben.
Problem 1: Die JSON-Zeichenfolge enthält unsichtbare Zeichen
Manchmal enthält die JSON-Zeichenfolge einige unsichtbare Zeichen, wie Leerzeichen oder Zeilenumbrüche. Diese Zeichen mögen harmlos erscheinen, können aber dazu führen, dass der JSON-Parser nicht richtig analysiert. Dies führt dazu, dass die Konvertierung vom JSON-String in das Array fehlschlägt.
Lösung:
Sie können versuchen, die trim()-Funktion von PHP zu verwenden, um unsichtbare Zeichen aus der Zeichenfolge zu entfernen. Zum Beispiel:
// 移除 JSON 字符串中的不可见字符 $json_str = trim($json_str); // 将 JSON 字符串转换为关联数组 $data = json_decode($json_str, true);
Problem 2: Der Schlüsselname in der JSON-Zeichenfolge entspricht nicht der PHP-Variablennamenspezifikation
Der Schlüsselname in JSON kann verschiedene Zeichen enthalten, nicht nur Buchstaben und Zahlen. Allerdings müssen Variablennamen in PHP bestimmten Namenskonventionen folgen. Wenn ein Schlüsselname in JSON nicht diesen Spezifikationen entspricht, analysiert der JSON-Parser den Schlüsselnamen nicht korrekt und die Konvertierung von JSON-String in Array schlägt fehl.
Problemumgehung:
Wenn Sie keine Kontrolle über den eingehenden JSON-String haben, können Sie versuchen, die assoziative Array-Option von PHP auf „false“ zu setzen. Dies führt dazu, dass der JSON-Parser Objekte in JSON als Standardobjekte statt als assoziative Arrays analysiert. Zum Beispiel:
// 将 JSON 字符串转换为标准对象 $data = json_decode($json_str, false);
Problem 3: Schlüsselnamen in der JSON-Zeichenfolge werden mit anderen Schlüsselnamen dupliziert
Schlüsselnamen in JSON müssen eindeutig sein. Wenn zwei oder mehr Schlüssel in einem JSON-String denselben Namen haben, kann der Parser sie nicht unterscheiden. Dies führt dazu, dass die Konvertierung vom JSON-String in das Array fehlschlägt.
Problemumgehung:
Wenn Sie die eingehende JSON-Zeichenfolge nicht ändern können, versuchen Sie, die Option JSON_BIGINT_AS_STRING von PHP auf „true“ zu setzen. Dadurch wird der JSON-Parser gezwungen, alle Zahlen in JSON als Zeichenfolgen zu analysieren. Zum Beispiel:
// 将 JSON 字符串中的数字解析为字符串 $data = json_decode($json_str, true, 512, JSON_BIGINT_AS_STRING);
Problem 4: JSON enthält illegale Strukturen
Das JSON-Format hat seine Einschränkungen und Einschränkungen. Wenn ein JSON-String diese Grenzwerte und Einschränkungen nicht einhält, kann der Parser den String nicht korrekt analysieren und die Konvertierung vom JSON-String in ein Array schlägt fehl.
Problemumgehung:
Wenn Sie keine Kontrolle über die eingehende JSON-Zeichenfolge haben, müssen Sie sicherstellen, dass sie der JSON-Spezifikation entspricht. Andernfalls müssen Sie den Fehler im JSON-String beheben.
Abschließend noch einige zusätzliche Problemumgehungen:
Zusammenfassung:
Wenn ein JSON-String nicht korrekt von JSON in ein Array konvertiert werden kann, gibt es viele Lösungen, die Ihnen einfallen. In jedem Fall müssen Sie die Eigenschaften und Einschränkungen von JSON verstehen, um möglicherweise auftretende Fehler identifizieren und beheben zu können. Lassen Sie uns zusammenarbeiten, um diese Probleme so schnell wie möglich zu lösen!
Das obige ist der detaillierte Inhalt vonDie Lösung für das Problem, dass der Schlüsselwert beim Konvertieren von JSON in Array PHP nicht abgerufen wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!