Heim > Artikel > Backend-Entwicklung > So konvertieren Sie JSON-Daten in ein Array in PHP
In der Webentwicklung ist die JSON-Technologie zu einem unverzichtbaren Bestandteil geworden und wird häufig in der Front-End- und Back-End-Datenübertragung und -Speicherung eingesetzt. In der PHP-Sprache müssen wir häufig JSON-Daten für den Betrieb und die Verarbeitung in Arrays konvertieren. In diesem Artikel erfahren Sie, wie Sie JSON in ein Array konvertieren.
1. Verwenden Sie die Funktion json_decode()
In PHP können wir die integrierte Funktion json_decode() verwenden, um einen JSON-String in ein PHP-Array zu analysieren. Die grundlegende Verwendung dieser Funktion ist wie folgt:
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
Darunter stellt der Parameter $json die zu analysierende JSON-Zeichenfolge dar, $assoc stellt dar, ob das analysierte Objekt in ein Array mit Schlüsselnamen konvertiert werden soll, der Standardwert ist false und $ Depth stellt die Analysetiefe dar, der Standardwert ist 512, $options stellt Analyseoptionen dar, der Standardwert ist 0.
Zum Beispiel haben wir die folgende JSON-Zeichenfolge:
{"name": "Tom", "age": 18, "hobbies": ["music", "movies"]}
Wir können sie mit dem folgenden PHP-Code in ein Array konvertieren:
$json = '{"name": "Tom", "age": 18, "hobbies": ["music", "movies"]}'; $arr = json_decode($json, true); print_r($arr);
Das Ausgabeergebnis lautet wie folgt:
Array ( [name] => Tom [age] => 18 [hobbies] => Array ( [0] => music [1] => movies ) )
2. Behandeln Sie häufige Probleme bei der Konvertierung
In der Praxis kann es vorkommen, dass wir auf das Problem stoßen, dass einige JSON-Strings nicht korrekt in Arrays konvertiert werden können. Als Nächstes stellen wir einige häufige Probleme und deren Lösungen vor.
Wenn die JSON-Zeichenfolge beispielsweise Sonderzeichen wie einfache oder doppelte Anführungszeichen enthält, meldet das Programm einen Fehler oder die Konvertierung schlägt fehl. Zu diesem Zeitpunkt können wir diese Situation vermeiden, indem wir die Zeichenfolge maskieren. PHP bietet eine integrierte Funktion addslashes() zum Escapen.
Zum Beispiel:
$json = '{"name": "Tom\'s book", "page": "100\""}'; $json = addslashes($json); $arr = json_decode($json, true); print_r($arr);
Das Ausgabeergebnis lautet wie folgt:
Array ( [name] => Tom's book [page] => 100" )
Wenn die JSON-Zeichenfolge Chinesisch enthält und nicht verarbeitet wird, schlägt die Konvertierung fehl oder wird verstümmelt . PHP bietet eine integrierte Funktion json_encode() zum Konvertieren eines Arrays in einen JSON-String. Außerdem können Parameter festgelegt werden, um verstümmelte chinesische Zeichen zu vermeiden.
Zum Beispiel:
$arr = array('name' => '张三', 'age' => 19); $json = json_encode($arr, JSON_UNESCAPED_UNICODE); echo $json;
Das Programm gibt die folgenden Ergebnisse aus:
{"name":"张三","age":19}
Bei der umgekehrten Verarbeitung müssen Sie eine JSON-Zeichenfolge im UTF-8-Codierungsformat verwenden, da sonst auch verstümmelte Zeichen auftreten.
Wenn ein JSON-String-Format falsch ist, kann die Funktion json_decode() den String nicht korrekt analysieren. Zu diesem Zeitpunkt müssen wir zunächst eine Formatüberprüfung der JSON-Zeichenfolge durchführen und diese dann entsprechend den verschiedenen Fehlertypen korrigieren.
Zum Beispiel:
$json = '[{"name": "Tom", "age": 18}, {"name": "Bob", "age":19}'; $arr = json_decode($json, true); if (json_last_error() !== JSON_ERROR_NONE) { switch (json_last_error()) { case JSON_ERROR_DEPTH: echo 'JSON字符串超出最大剖析深度'; break; case JSON_ERROR_STATE_MISMATCH: echo 'JSON字符串格式错误'; break; case JSON_ERROR_UTF8: echo 'JSON字符串包含非UTF-8字符'; break; default: echo 'JSON字符串解析失败'; break; } } else { print_r($arr); }
Das Ausgabeergebnis lautet wie folgt:
JSON字符串格式错误
Das Obige ist die Methode zum Konvertieren von JSON in ein Array und die Lösungen für verschiedene Probleme. Ich hoffe, dass dieser Artikel für PHP-Entwickler hilfreich sein kann.
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie JSON-Daten in ein Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!