Heim >Backend-Entwicklung >PHP-Problem >So konvertieren Sie PHP-JSON in ein Array

So konvertieren Sie PHP-JSON in ein Array

PHPz
PHPzOriginal
2023-04-25 09:02:04523Durchsuche

Mit der Entwicklung des Internets und der Weiterentwicklung der Technologie ist die Trennung von Front-End und Back-End zu einem gängigen Architekturansatz geworden. Der Vorteil dieser Architektur besteht darin, dass Front-End und Back-End getrennt entwickelt werden können, wodurch die Entwicklung effizienter wird. Das Front-End kann Seiten flexibler implementieren und das Benutzererlebnis verbessern und Geschäftslogik. Im Entwicklungsprozess der Trennung von Front-End und Back-End wird jedoch das Problem der Datenübertragung zwischen Front-End und Back-End immer wichtiger. Normalerweise verwenden wir das JSON-Format für die Datenübertragung, und auf der Serverseite müssen wir JSON-Strings in Arrays konvertieren. PHP bietet viele Funktionen, um diese Funktion zu erreichen.

  1. json_decode()

json_decode() ist eine der integrierten Funktionen von PHP, die JSON-formatierte Zeichenfolgen in PHP-Arrays oder -Objekte konvertieren kann. Diese Funktion akzeptiert zwei Parameter: Der erste ist der zu dekodierende JSON-String und der zweite Parameter ist ein optionaler Parameter vom Typ Boolean, der angibt, ob der Rückgabewert in ein assoziatives Array konvertiert werden soll. Die Funktion json_decode() gibt ein Objekt zurück, wenn das zweite Argument falsch ist (Standardeinstellung), und ein assoziatives Array, wenn das zweite Argument wahr ist. json_decode() 是 PHP 内置的函数之一,它可以将 JSON 格式的字符串转换为 PHP 数组或对象。这个函数接受两个参数:第一个是要被解码的 JSON 字符串,第二个参数是一个布尔类型的可选参数,用于指定返回值是否转换为关联数组。当第二个参数为 false 时(默认值),json_decode() 函数将返回一个对象,当第二个参数为 true 时,函数将返回一个关联数组。

代码示例:

$json_str = '{"name": "Tom", "age": 18}';
// 将 JSON 字符串解码成对象
$obj = json_decode($json_str);
echo $obj->name;  // 输出 "Tom"
echo $obj->age;   // 输出 "18"

// 将 JSON 字符串解码成关联数组
$arr = json_decode($json_str, true);
echo $arr['name'];  // 输出 "Tom"
echo $arr['age'];   // 输出 "18"
  1. json_decode() + file_get_contents()

如果 JSON 数据是从文件中读取的,我们也可以利用 PHP 内置的 file_get_contents() 函数读取文件内容,再用 json_decode() 函数将 JSON 数据转换成数组。代码示例:

$json_file = 'test.json';
// 读取文件内容
$json_str = file_get_contents($json_file);
$arr = json_decode($json_str, true);
  1. json_decode() + cURL

如果 JSON 数据是通过 API 获取的,我们可以使用 PHP 内置的 cURL 库获取数据,并用 json_decode() 函数将 JSON 数据转换成数组。代码示例:

$url = 'https://api.example.com/get_data';
// 初始化 cURL
$ch = curl_init();
// 设置 URL 和其他 cURL 选项
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 发送请求并处理响应
$response = curl_exec($ch);
$arr = json_decode($response, true);
// 关闭 cURL
curl_close($ch);
  1. 使用第三方库

除了 PHP 内置的 json_decode() 函数,我们还可以使用第三方库来实现将 JSON 数据转换成数组的功能。常见的第三方库有:

  • symfony/yaml:Symfony YAML 组件提供了 YAML 和 JSON 之间的相互转换功能。虽然其主要目的是为 YAML 文件提供配置选项,但它实际上也可以将 JSON 转换为数组。
  • seld/jsonlint:seld/jsonlint 是一个 JSON 解析器,可以将 JSON 转换为数组,并进行语法检查。

这里以 symfony/yaml 为例,介绍如何使用第三方组件将 JSON 数据转换为数组。首先需要通过 Composer 安装相关组件:

composer require symfony/yaml

然后在代码中使用 SymfonyComponentYamlYaml::parse() 方法将 JSON 数据转换成数组:

use Symfony\Component\Yaml\Yaml;

$json_str = '{"name": "Tom", "age": 18}';

// 将 JSON 字符串转换成数组
$arr = Yaml::parse($json_str);
echo $arr['name'];  // 输出 "Tom"
echo $arr['age'];   // 输出 "18"

总结

以上就是将 JSON 数据转换成数组的几种方法,其中 json_decode()

Codebeispiel: 🎜rrreee
    🎜json_decode() + file_get_contents()🎜🎜🎜Wenn die JSON-Daten aus einer Datei gelesen werden, können wir auch PHPs integrierten file_get_contents() verwenden Die Funktion liest den Dateiinhalt und verwendet dann die Funktion json_decode(), um die JSON-Daten in ein Array zu konvertieren. Codebeispiel: 🎜rrreee
      🎜json_decode() + cURL🎜🎜🎜Wenn die JSON-Daten über die API abgerufen werden, können wir die integrierte cURL-Bibliothek von PHP verwenden, um die Daten abzurufen, und json_decode verwenden ()-Funktion konvertiert JSON-Daten in ein Array. Codebeispiel: 🎜rrreee<ol start="4">🎜Bibliotheken von Drittanbietern verwenden🎜🎜🎜Zusätzlich zur in PHP integrierten Funktion <code>json_decode() können wir dazu auch Bibliotheken von Drittanbietern verwenden Konvertieren Sie die JSON-Datenfunktion in ein Array. Gängige Bibliotheken von Drittanbietern sind: 🎜
      🎜symfony/yaml: Die Symfony YAML-Komponente bietet Konvertierungsfunktionen zwischen YAML und JSON. Während sein Hauptzweck darin besteht, Konfigurationsoptionen für YAML-Dateien bereitzustellen, kann es tatsächlich auch JSON in ein Array konvertieren. 🎜🎜seld/jsonlint: seld/jsonlint ist ein JSON-Parser, der JSON in Arrays konvertieren und eine Syntaxprüfung durchführen kann. 🎜
    🎜Hier nehmen wir symfony/yaml als Beispiel, um vorzustellen, wie man Komponenten von Drittanbietern verwendet, um JSON-Daten in ein Array zu konvertieren. Zuerst müssen Sie die relevanten Komponenten über Composer installieren: 🎜rrreee🎜 Dann verwenden Sie die Methode SymfonyComponentYamlYaml::parse() im Code, um die JSON-Daten in ein Array zu konvertieren: 🎜rrreee🎜Summary🎜🎜 Das Obige dient der Konvertierung der JSON-Daten in. Es gibt mehrere Methoden für Arrays, von denen json_decode() am häufigsten verwendet wird. Darüber hinaus können wir für die Konvertierung auch Komponenten von Drittanbietern verwenden. Die spezifische Methode kann entsprechend der tatsächlichen Situation und den Anforderungen ausgewählt werden. Unabhängig davon, welche Methode verwendet wird, sollten wir darauf achten, ob das Format der JSON-Daten korrekt ist, und abnormale Situationen entsprechend behandeln. 🎜

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie PHP-JSON in ein Array. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Ist PHP-Array ein Index-Array?Nächster Artikel:Ist PHP-Array ein Index-Array?