Comment utiliser JSON en langage PHP et restaurer json dans un tableau

不言
Libérer: 2023-03-29 14:38:01
original
1355 Les gens l'ont consulté

Cet article présente principalement la méthode d'utilisation de JSON en langage PHP et de réduction de json dans un tableau. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

J'ai. J'ai déjà écrit un exemple simple de retour de données JSON en PHP. Je viens d'aller en ligne et j'ai soudainement trouvé un article qui présentait également JSON. Il était assez détaillé et méritait d'être consulté. Le contenu est le suivant

A partir de la version 5.2, PHP fournit nativement les fonctions json_encode() et json_decode(), la première est utilisée pour l'encodage, et la seconde est utilisée pour le décodage.

1. json_encode()

<?php 
$arr = array (&#39;a&#39;=>1,&#39;b&#39;=>2,&#39;c&#39;=>3,&#39;d&#39;=>4,&#39;e&#39;=>5); 
echo json_encode($arr); 
?>
Copier après la connexion

Sortie

{"a":1,"b":2,"c":3,"d":4,"e":5}
Copier après la connexion

Regardez un autre exemple de conversion d'objet :

$obj->body      = &#39;another post&#39;; 
$obj->id       = 21; 
$obj->approved    = true; 
$obj->favorite_count = 1; 
$obj->status     = NULL; 
echo json_encode($obj);
Copier après la connexion

Sortie

{ 
    "body":"another post", 
   
    "id":21, 
   
    "approved":true, 
   
    "favorite_count":1, 
   
    "status":null 
  }
Copier après la connexion

Étant donné que json n'accepte que les caractères codés en utf-8, les paramètres de json_encode() doivent être codés en utf-8, sinon vous obtiendrez des caractères vides ou nuls. Lorsque le chinois utilise le codage GB2312 ou que les langues étrangères utilisent le codage ISO-8859-1, une attention particulière doit être portée à ce point.

2. Tableaux indexés et tableaux associatifs

PHP prend en charge deux types de tableaux, l'un est un tableau indexé qui stocke uniquement la "valeur" (valeur), l'autre est un tableau associatif qui stocke les paires nom/valeur.

Étant donné que javascript ne prend pas en charge les tableaux associatifs, json_encode() convertit uniquement le tableau indexé au format tableau et convertit le tableau associatif au format objet.

Par exemple, il y a maintenant un tableau d'index

$arr = Array(&#39;one&#39;, &#39;two&#39;, &#39;three&#39;); 
   
  echo json_encode($arr);
Copier après la connexion

sortie

["one","two","three"]
Copier après la connexion

Si vous le changez en tableau associatif :

$arr = Array(&#39;1&#39;=>&#39;one&#39;, &#39;2&#39;=>&#39;two&#39;, &#39;3&#39;=>&#39;three&#39;); 
    
  echo json_encode($arr);
Copier après la connexion

La sortie devient

{"1":"one","2":"two","3":"three"}
Copier après la connexion

Notez que le format des données est passé de "[]" (tableau) à "{}" (objet).

Si vous devez forcer "tableau d'index" dans "objet", vous pouvez écrire comme ceci

json_encode( (object)$arr );
Copier après la connexion

ou

json_encode ( $arr, JSON_FORCE_OBJECT );
Copier après la connexion

3. Conversion de classe

Ce qui suit est une classe PHP :

class Foo { 
   
    const   ERROR_CODE = &#39;404&#39;; 
   
    public  $public_ex = &#39;this is public&#39;; 
   
    private  $private_ex = &#39;this is private!&#39;; 
   
    protected $protected_ex = &#39;this should be protected&#39;; 
    
    public function getErrorCode() { 
   
      return self::ERROR_CODE; 
   
    } 
   
  }
Copier après la connexion

Maintenant, effectuez la conversion json sur l'instance de cette classe :

$foo = new Foo; 
   
  $foo_json = json_encode($foo); 
   
  echo $foo_json;
Copier après la connexion

Le résultat de sortie est

{"public_ex":"this is public"}
Copier après la connexion

Comme vous pouvez le constater, à l'exception des variables publiques (public), d'autres éléments (constantes, variables privées, méthodes, etc.) manquent.

4. json_decode()

Cette fonction est utilisée pour convertir le texte json dans la structure de données PHP correspondante. Voici un exemple :

 $json = &#39;{"foo": 12345}&#39;; 
    
  $obj = json_decode($json); 
   
  print $obj->{&#39;foo&#39;}; // 12345
Copier après la connexion

Normalement, json_decode() renvoie toujours un objet PHP, pas un tableau. Par exemple :

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 
    
  var_dump(json_decode($json));
Copier après la connexion

Le résultat est de générer un objet PHP :

object(stdClass)#1 (5) { 
   
    ["a"] => int(1) 
    ["b"] => int(2) 
    ["c"] => int(3) 
    ["d"] => int(4) 
    ["e"] => int(5) 
   
  }
Copier après la connexion

Si vous souhaitez forcer la génération d'un tableau associatif PHP, json_decode() doit ajouter un paramètre true :

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 
    
  var_dump(json_decode($json,true));
Copier après la connexion

Le résultat est un tableau associatif :

array(5) { 
   
     ["a"] => int(1) 
     ["b"] => int(2) 
     ["c"] => int(3) 
     ["d"] => int(4) 
     ["e"] => int(5) 
   
  }
Copier après la connexion

5. Erreurs courantes de json_decode()

Les trois méthodes suivantes. d'écrire json est faux, pouvez-vous voir où se trouve l'erreur ?

$bad_json = "{ &#39;bar&#39;: &#39;baz&#39; }"; 
   
  $bad_json = &#39;{ bar: "baz" }&#39;; 
   
  $bad_json = &#39;{ "bar": "baz", }&#39;;
Copier après la connexion

L'exécution de json_decode() sur ces trois chaînes renverra null et signalera une erreur.

La première erreur est que le délimiteur json autorise uniquement l'utilisation de guillemets doubles, pas de guillemets simples. La deuxième erreur est que le "nom" (la partie à gauche des deux points) de la paire nom-valeur json doit dans tous les cas utiliser des guillemets doubles. La troisième erreur est que vous ne pouvez pas ajouter une virgule après la dernière valeur.

De plus, json ne peut être utilisé que pour représenter des objets et des tableaux. Si json_decode() est utilisé sur une chaîne ou une valeur, null sera renvoyé.

var_dump(json_decode("Hello World")); //null
Copier après la connexion

Recommandations associées :

php Méthodes pour lire, écrire et modifier des fichiers 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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal