Cet article vous présentera comment utiliser json en PHP, ainsi que quelques erreurs courantes dans json_decode(). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
1. json_encode()
Cette fonction est principalement utilisée pour convertir des tableaux et des objets au format json. [Recommandations associées : Tutoriel PHP]
Regardez d'abord un exemple de conversion de tableau :
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); // 结果为 {"a":1,"b":2,"c":3,"d":4,"e":5}
Regardez ensuite un exemple de conversion d'objet :
$obj->body = 'another post'; $obj->id = 21; $obj->approved = true; $obj->favorite_count = 1; $obj->status = NULL; echo json_encode($obj); // 结果为 { "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 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 le 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 existe maintenant un tableau d'index
$arr = Array('one', 'two', 'three'); echo json_encode($arr);
et le résultat est :
["one","two","three"]
Si vous le changez en tableau associatif :
$arr = Array('1'=>'one', '2'=>'two', '3'=>'three'); echo json_encode($arr);
le résultat change :
{"1":"one","2":"two","3":"three"}
Notez que le format des données est passé de "[]" (tableau) à "{}" (objet).
Si vous devez forcer la conversion du "tableau d'index" en "objet", vous pouvez écrire comme ceci
json_encode( (object)$arr );
ou
json_encode ( $arr, JSON_FORCE_OBJECT );
3. Conversion de classe
Ce qui suit est une classe PHP :
class Foo { const ERROR_CODE = '404'; public $public_ex = 'this is public'; private $private_ex = 'this is private!'; protected $protected_ex = 'this should be protected'; public function getErrorCode() { return self::ERROR_CODE; } }
Maintenant, effectuez une conversion json sur l'instance de cette classe :
$foo = new Foo; $foo_json = json_encode($foo); echo $foo_json;
Le résultat de sortie est
{"public_ex":"this is public"}
Vous pouvez voir qu'à 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 = '{"foo": 12345}'; $obj = json_decode($json); print $obj->{'foo'}; // 12345
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));
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) }
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));
Le résultat est Un tableau associatif est généré :
array(5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) }
5. Erreurs courantes de json_decode()
Les trois façons suivantes d'écrire json sont tout va mal. Pouvez-vous voir où est l'erreur ?
$bad_json = "{ 'bar': 'baz' }"; $bad_json = '{ bar: "baz" }'; $bad_json = '{ "bar": "baz", }';
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
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!