Maison > interface Web > js tutoriel > le corps du texte

Quelle est l'application de json en php ? (exemple de code)

不言
Libérer: 2018-09-28 16:01:04
avant
1812 Les gens l'ont consulté

Ce que cet article vous apporte concerne l'application de json en php ? (Exemple de code) a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère que cela vous sera utile.

À 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()

Cette fonction est principalement utilisée pour convertir des tableaux et des objets au format json. Regardons d'abord un exemple de conversion de tableau :

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);  
echo json_encode($arr);
Copier après la connexion

Le résultat est : {"a":1,"b":2,"c":3,"d":4,"e ":5 }<span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>

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

Le résultat est : {"body":"another post","id" :21," approved":true,"favorite_count":1,"status":null} 

Puisque json n'accepte que les caractères codés en utf-8, les paramètres de json_encode() doivent être encodé en utf-8, sinon vous obtiendrez un caractère nul ou null. 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 un tableau "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
结果为:["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

Le résultat changements : {"1": "un", "2": "deux", "3": trois"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation">  </span></span></span></span></span></span></span></span></span></span></span></span></span>

Notez que le format des données passe de "[]" (tableau) Devenu "{}" (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 les instances 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"}<span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation"> </span></span></span></span></span><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation">  </span></span></span></span></span>

Comme vous pouvez le voir, sauf pour les variables publiques (publiques) , tout le reste (constantes, variables privées, méthodes, etc.) est perdu.

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 = &#39;{"a":1,"b":2,"c":3,"d":4,"e":5}&#39;;
var_dump(json_decode($json)); 
Copier après la connexion

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

object(stdClass)[2]
  public &#39;a&#39; => int 1
  public &#39;b&#39; => int 2
  public &#39;c&#39; => int 3
  public &#39;d&#39; => int 4
  public &#39;e&#39; => 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 = &#39;{"a":1,"b":2,"c":3,"d":4,"e":5}&#39;;
var_dump(json_decode($json,true));   
Copier après la connexion

Le résultat est un tableau associatif :

array (size=5)
  &#39;a&#39; => int 1
  &#39;b&#39; => int 2
  &#39;c&#39; => int 3
  &#39;d&#39; => int 4
  &#39;e&#39; => int 5
Copier après la connexion

5. >

Les trois façons suivantes d'écrire json sont toutes fausses. 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

retournera null et signalera une erreur.

第一个的错误是,json的分隔符(delimiter)只允许使用双引号,不能使用单引号。

第二个的错误是,json名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号

第三个的错误是,最后一个值之后不能添加逗号(trailing comma)
另外,json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。

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

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:cnblogs.com
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!