In PHP müssen wir manchmal JSON-Daten zur Verarbeitung in ein Array-Format konvertieren. Zu diesem Zeitpunkt können wir die Funktion json_decode() verwenden, um JSON-Daten in ein PHP-Array zu konvertieren. In diesem Artikel wird erläutert, wie Sie mit der Funktion json_decode() JSON-Daten in ein Array konvertieren und einige häufig gestellte Fragen beantworten.
JSON ist ein leichtes Datenaustauschformat, das häufig zur Datenübertragung verwendet wird, da es einfach zu verstehen, einfach zu verwenden und leicht zu erweitern ist. PHP ist eine schwach typisierte Programmiersprache, die effizient, schnell, einfach zu erlernen und zu verwenden ist. Da das JSON-Format nativ in PHP unterstützt wird, ist es sehr praktisch, PHP zur Verarbeitung von JSON-Daten während der Entwicklung zu verwenden.
Verwenden Sie die Funktion json_decode(), um JSON-Daten in ein Array zu konvertieren.
Das Folgende ist ein Beispielcode zum Konvertieren von JSON-Daten in ein Array:
$json = '{"name":"Tom","age":"20","sex":"male"}'; $arr = json_decode($json, true); var_dump($arr);
Ausgabeergebnis:
array(3) { ["name"]=> string(3) "Tom" ["age"]=> string(2) "20" ["sex"]=> string(4) "male" }
Wie Sie sehen können, ist die Funktion json_decode() Konvertiert JSON-Daten in ein PHP-Array. Der zweite Parameter dieser Funktion kann auf „true“ oder „false“ gesetzt werden, was ein assoziatives Array zurückgibt, wenn es auf „true“ gesetzt ist, oder ein Objekt, wenn es auf „false“ gesetzt oder nicht gesetzt ist.
Das Folgende ist ein Beispielcode zum Zurückgeben eines Objekts:
$json = '{"name":"Tom","age":"20","sex":"male"}'; $obj = json_decode($json); var_dump($obj);
Ausgabeergebnis:
object(stdClass)#1 (3) { ["name"]=> string(3) "Tom" ["age"]=> string(2) "20" ["sex"]=> string(4) "male" }
Wenn Sie beim Parsen einer JSON-Zeichenfolge feststellen, dass die Zeichenkodierung nicht UTF-8 ist, müssen Sie sie in UTF-8 konvertieren Kodierung:
$json = '{"name":"Tom","age":"20","sex":"male"}'; $json = mb_convert_encoding($json, 'UTF-8', 'auto'); // 将编码转换为 UTF-8 $arr = json_decode($json, true); var_dump($arr);
FAQ
1. Wie gehe ich mit JSON-Parsing-Fehlern um?
Während der Verarbeitung von JSON-Daten können Analysefehler aufgrund von Problemen mit dem JSON-Datenformat oder dem Kodierungsformat auftreten. An dieser Stelle können Sie die Funktion json_last_error() verwenden, um die Ursache des Analysefehlers zu ermitteln. Diese Funktion gibt eine Zahl zurück, die den Typ des JSON-Parsing-Fehlers darstellt. Das Folgende ist die Definition des Fehlertyps:
Verwenden Sie den folgenden Code, um die Ursache des Parsing-Fehlers zu ermitteln:
$json = '{"name": "Tom""age": "20"}'; // 注意,这里有错误 $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_CTRL_CHAR: echo 'JSON 数据中有不正确的控制字符'; break; case JSON_ERROR_SYNTAX: echo 'JSON 数据存在语法错误'; break; case JSON_ERROR_UTF8: echo 'JSON 数据不是 UTF-8 编码'; break; default: echo '未知的 JSON 解析错误'; break; } } var_dump($arr);
Ausgabeergebnis:
JSON 数据存在语法错误 NULL
Wie oben gezeigt, kann die Funktion json_last_error() leicht die Ursache des Parsing-Fehlers ermitteln, um die Ursache schnell zu finden Problem.
2. Wie gehe ich mit dem Problem des nicht standardmäßigen JSON-Formats um?
Bei der tatsächlichen Verwendung liegen einige JSON-Daten möglicherweise nicht im standardisierten Format vor, z. B. die Verwendung eines Kommas nach dem letzten Attributwert. Wenn Sie die Funktion json_decode() verwenden, um diese JSON-Daten zu analysieren, wird NULL zurückgegeben. An dieser Stelle können wir zur Verarbeitung eine Bibliothek eines Drittanbieters verwenden.
Das Folgende ist ein Beispielcode, der die json5-Bibliothek verwendet, um das nicht-kanonische JSON-Format zu verarbeiten:
// 首先,安装 json5 库 // composer require symfony/polyfill-mbstring // composer require webonyx/json5 $json = '{"name": "Tom", "age": 20, }'; // 注意,这里有错误 use Json5Parser; $parser = new Parser(); $arr = $parser->decode($json); var_dump($arr);
Ausgabeergebnis:
array(2) { ["name"]=> string(3) "Tom" ["age"]=> int(20) }
Wie oben gezeigt, kann die Verwendung der json5-Bibliothek das Problem des nicht-kanonischen JSON-Formats problemlos lösen.
3. Wie geht man mit dem Problem des domänenübergreifenden Zugriffs auf JSON-Daten um?
Das Problem des domänenübergreifenden Zugriffs auf JSON-Daten führt dazu, dass der Browser aus Sicherheitsgründen verhindert, dass das Front-End in einer Ajax-Anfrage über Ajax-Anfragen hinweg auf Ressourcen in anderen Domänen zugreift. Zu diesem Zeitpunkt müssen wir einige Einstellungen vornehmen.
Das Folgende ist ein Beispielcode für die Verwendung von PHP, um einen domänenübergreifenden Zugriff zu erreichen:
header('Access-Control-Allow-Origin: *'); // 允许所有域名访问 header('Content-Type: application/json'); $json = '{"name": "Tom", "age": 20, "sex": "male"}'; echo $json;
Wie oben gezeigt, ermöglicht das Setzen des Access-Control-Allow-Origin-Headers in PHP den domänenübergreifenden Zugriff von anderen Domänennamen.
Fazit
Bisher haben wir vorgestellt, wie man die Funktion json_decode() verwendet, um JSON-Daten in ein Array zu konvertieren, und wie man einige häufige Probleme löst, die bei der Verarbeitung von JSON-Daten auftreten. Ich hoffe, dass dieser Artikel für alle hilfreich sein kann.
Das obige ist der detaillierte Inhalt vonKonvertieren Sie PHP-JSON-Daten in ein Array. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!