Maison développement back-end Problème PHP Comment obtenir un tableau json en PHP

Comment obtenir un tableau json en PHP

Apr 25, 2023 am 09:05 AM

Avec le développement continu d'Internet, les applications Web utilisent de plus en plus le format JSON (JavaScript Object Notation) pour transmettre des données. PHP peut facilement gérer les données JSON, ce qui en fait le langage de choix pour de nombreux développeurs Web.

Obtenir des données JSON et les convertir en tableau est une tâche très courante en PHP. Cet article présentera comment utiliser PHP pour obtenir un tableau JSON, y compris les aspects suivants :

  1. Utilisez la fonction json_decode() pour convertir une chaîne JSON en tableau PHP
  2. Utilisez la bibliothèque PHP curl pour obtenir des données JSON à partir d'autres sites Web.
  3. Utilisez une bibliothèque tierce (par exemple Guzzle) Obtenez des données JSON
  4. Gérez les erreurs et les exceptions lors de l'obtention de données JSON
  5. Utilisez la fonction json_decode() pour convertir une chaîne JSON en tableau PHP

PHP fournit un moyen simple de convertir JSON chaîne en tableau PHP, c'est-à-dire la fonction json_decode(). La fonction est utilisée comme suit :

$json_string = '{"name":"John","age":30,"city":"New York"}';
$php_array = json_decode($json_string, true);
print_r($php_array);
Copier après la connexion

Sortie :

Array
(
    [name] => John
    [age] => 30
    [city] => New York
)
Copier après la connexion

Dans l'exemple ci-dessus, une chaîne JSON est d'abord définie puis convertie en tableau PHP à l'aide de la fonction json_decode().

Il est à noter que le deuxième paramètre de la fonction json_decode() est une valeur booléenne indiquant s'il faut convertir la chaîne JSON en tableau associatif. S'il est défini sur false ou non, convertit la chaîne JSON en objet. Cependant, il est plus courant de convertir une chaîne JSON en tableau.

De plus, si la chaîne JSON n'est pas valide ou contient des données JSON non valides, la fonction json_decode() renverra NULL. Par conséquent, vous devez vérifier si la valeur de retour est NULL avant d'utiliser le tableau.

  1. Utilisez la bibliothèque PHP curl pour obtenir des données JSON d'autres sites Web

Si vous souhaitez obtenir des données JSON d'autres sites Web, vous pouvez utiliser la bibliothèque PHP curl. La bibliothèque curl est une bibliothèque open source qui prend en charge plusieurs protocoles, notamment HTTP, FTP, SMTP, etc.

Voici un exemple simple d'utilisation de curl pour obtenir des données JSON :

$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, "http://example.com/data.json");
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
$json_data = curl_exec($curl_handle);
curl_close($curl_handle);

$php_array = json_decode($json_data, true);
print_r($php_array);
Copier après la connexion

Dans le code ci-dessus, créez d'abord une session curl via la fonction curl_init(). Ensuite, utilisez la fonction curl_setopt() pour définir les options, qui incluent l'URL permettant de télécharger les données JSON à partir du site Web et l'option permettant de stocker les données téléchargées dans une chaîne.

Enfin, utilisez la fonction curl_exec() pour exécuter la session curl et stocker les données JSON renvoyées dans la variable $json_data. Ensuite, utilisez la fonction json_decode() pour convertir la chaîne $json_data en un tableau PHP.

Il convient de noter que la session curl dans l'exemple ci-dessus ne ferme pas automatiquement curl après l'exécution du script. Par conséquent, la session curl doit être fermée explicitement à l'aide de la fonction curl_close().

  1. Utilisez des bibliothèques tierces (telles que Guzzle) pour obtenir des données JSON

Il existe de nombreuses bibliothèques tierces en PHP qui peuvent facilement obtenir des données JSON à partir d'autres sites Web. L'une des bibliothèques les plus populaires est Guzzle.

Guzzle est un client PHP basé sur HTTP pour envoyer des requêtes et traiter les réponses. Guzzle peut gérer automatiquement les délais d'attente, les redirections, la gestion des cookies et d'autres problèmes. Il prend également en charge le traitement asynchrone et les messages HTTP PSR-7. Voici un exemple d'utilisation de Guzzle pour obtenir des données JSON :

use GuzzleHttp\Client;

$client = new Client();
$response = $client->get('http://example.com/data.json');
$json_data = $response->getBody()->getContents();
$php_array = json_decode($json_data, true);
print_r($php_array);
Copier après la connexion

Dans l'exemple ci-dessus, un client Guzzle est d'abord créé. Ensuite, utilisez la méthode $client->get() pour envoyer une requête GET et stocker la réponse dans la variable $response.

Utilisez la méthode $response->getBody()->getContents() pour obtenir le contenu du corps de la réponse de l'objet de réponse et le stocker dans la variable $json_data. Enfin, utilisez la fonction json_decode() pour convertir la chaîne $json_data en un tableau PHP.

  1. Gestion des erreurs et des exceptions lors de l'obtention de données JSON

Lors de l'obtention de données JSON à partir d'autres sites Web ou de la conversion d'une chaîne JSON en tableau PHP, des erreurs ou des exceptions peuvent survenir. Par conséquent, des mécanismes appropriés de gestion des erreurs et des exceptions doivent être ajoutés au code.

Par exemple, l'exemple de code suivant montre comment utiliser un bloc try-catch pour intercepter les erreurs de décodage JSON :

$json_string = '{"name":"John","age":30,"city":"New York","}';
try {
    $php_array = json_decode($json_string, true, 512, JSON_THROW_ON_ERROR);
    print_r($php_array);
} catch (JsonException $e) {
    echo 'JSON解码错误:', $e->getMessage();
}
Copier après la connexion

Dans le code ci-dessus, l'option JSON_THROW_ON_ERROR et le bloc try-catch sont utilisés pour intercepter l'exception d'erreur JSON. Si la chaîne JSON n'est pas valide, une JsonException sera levée.

De plus, les opérations curl et les requêtes Guzzle peuvent être encapsulées dans des fonctions, et la gestion des erreurs et des exceptions est incluse. Cela rendra le code plus facile à gérer et à réutiliser.

Résumé

Obtenir des tableaux JSON est une partie importante du développement Web moderne. La fonction json_decode() de PHP peut facilement convertir les chaînes JSON en tableaux PHP, tandis que des bibliothèques telles que curl et Guzzle peuvent obtenir des données JSON à partir d'autres sites Web. Bien que ces méthodes soient simples et faciles à utiliser, une attention particulière doit être accordée à la gestion des erreurs et des exceptions lors de l'obtention de données JSON.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles sont les meilleures pratiques pour la déduplication des tableaux PHP Quelles sont les meilleures pratiques pour la déduplication des tableaux PHP Mar 03, 2025 pm 04:41 PM

Quelles sont les meilleures pratiques pour la déduplication des tableaux PHP

La déduplication PHP Array peut-elle profiter de l'unicité du nom clé? La déduplication PHP Array peut-elle profiter de l'unicité du nom clé? Mar 03, 2025 pm 04:51 PM

La déduplication PHP Array peut-elle profiter de l'unicité du nom clé?

Quelles sont les dernières normes de codage PHP et les meilleures pratiques? Quelles sont les dernières normes de codage PHP et les meilleures pratiques? Mar 10, 2025 pm 06:16 PM

Quelles sont les dernières normes de codage PHP et les meilleures pratiques?

Comment puis-je travailler avec les extensions de PHP et PECL? Comment puis-je travailler avec les extensions de PHP et PECL? Mar 10, 2025 pm 06:12 PM

Comment puis-je travailler avec les extensions de PHP et PECL?

Comment implémenter les files d'attente de messages (Rabbitmq, Redis) dans PHP? Comment implémenter les files d'attente de messages (Rabbitmq, Redis) dans PHP? Mar 10, 2025 pm 06:15 PM

Comment implémenter les files d'attente de messages (Rabbitmq, Redis) dans PHP?

La déduplication du tableau PHP doit-elle être prise en compte pour les pertes de performance? La déduplication du tableau PHP doit-elle être prise en compte pour les pertes de performance? Mar 03, 2025 pm 04:47 PM

La déduplication du tableau PHP doit-elle être prise en compte pour les pertes de performance?

Quelles sont les techniques d'optimisation pour la déduplication des tableaux PHP Quelles sont les techniques d'optimisation pour la déduplication des tableaux PHP Mar 03, 2025 pm 04:50 PM

Quelles sont les techniques d'optimisation pour la déduplication des tableaux PHP

Comment utiliser la réflexion pour analyser et manipuler le code PHP? Comment utiliser la réflexion pour analyser et manipuler le code PHP? Mar 10, 2025 pm 06:12 PM

Comment utiliser la réflexion pour analyser et manipuler le code PHP?

See all articles