Comment convertir le format php json : 1. Convertissez le tableau et l'objet php au format json via la fonction json_encode ; 2. Convertissez le texte json en structure de données PHP correspondante via la fonction json_decode.
L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3.
Conversion mutuelle du format PHP json
php fournit nativement json_encode($str) et json_decode($str).
1.json_encode()
Cette fonction convertit le tableau et l'objet php au format json.
eg:array $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); result:{"a":1,"b":2,"c":3,"d":4,"e":5} eg:object $obj->body = 'another post'; $obj->id = 21; result: { "body":"another post", "id":21, }
2. Tableaux indexés et tableaux associatifs
PHP prend en charge deux types de tableaux, l'un est un tableau indexé qui stocke uniquement "value" (value), 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 un tableau d'index
$arr = Array('one', 'two', 'trois');
echo json_encode( $ arr);
Le résultat est :
["un", "deux", "trois"]
Si vous changez-le Pour un tableau associatif :
$arr = Array('1'=>'un', '2'=>'deux', '3'=>'trois' );
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 "index array" dans "object", vous pouvez écrire comme ceci
json_encode( (object)$arr );
ou
json_encode ( $arr, JSON_FORCE_OBJECT );
3. Conversion des classes
Ce qui suit est une classe PHP :
class Foo {
const ERROR_CODE = '404';
public $public_ex = 'c'est public'
private $private_ex = 'this est privé !';
protected $protected_ex = 'cela devrait être protégé';
public function getErrorCode() {return self::ERROR_CODE >
> }
Maintenant, convertissez les instances de cette classe en json :
$foo = new Foo;
$foo_json = json_encode($foo);
echo $foo_json;
Le résultat de sortie est
{"public_ex":"ceci est public"}
Vous pouvez voir Arrive, sauf pour les variables publiques (public), d'autres choses (constantes, variables privées, méthodes, etc.) manquent .
[Apprentissage recommandé : Tutoriel vidéo PHP]
4. json_decode()
Cette fonction est utilisée pour convertir json. texte Convertir en 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 :
$json = '{"a":1,"b" :2,"c":3 ,"d":4,"e":5}';object(stdClass)#1 (5) {
["a"] => int(1)
:
["b"] => int(2)
["c"] => 3)
["d"] => int(4)
["e"] => >Si vous souhaitez forcer la génération d'un tableau associatif PHP, json_decode() doit ajouter un paramètre true
var_dump(json_decode($json),true);
["a"] => int(1)
Le résultat est généré Un tableau associatif :
array(5) {
[" b"] => int( 2)
["c"] => int(3)["d"] => int(4)["e"] => ; int(5)
}
Les trois façons suivantes d'écrire json sont toutes. faux. Pouvez-vous voir où est l'erreur ?
5 Erreurs courantes de json_decode()
$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 de valeurs nom json, doit utiliser des guillemets doubles dans tous les cas. 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!