Maison  >  Article  >  développement back-end  >  Analyse PHP Json

Analyse PHP Json

墨辰丷
墨辰丷original
2018-05-15 16:44:505884parcourir

Cet article présente principalement l'analyse PHP Json. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Tout le monde devrait être familier avec JSON (JavaScript Object Notation) , qui est un format d'échange de données léger. Facile à lire et à écrire pour les humains. Il est également facile à analyser et à générer pour les machines. Il est basé sur un sous-ensemble du Langage de programmation JavaScript, norme ECMA-262 3e édition - décembre 1999. JSON adopte un format de texte totalement indépendant de la langue, mais utilise également des conventions similaires à la famille de langages C (y compris C, C++, C#, Java, JavaScript, Perl, Python, etc.). Ces fonctionnalités font du JSON un langage d'échange de données idéal.

JSON est construit à partir de deux structures :

"Nom/Valeur" Une collection de paires nom/valeur). Dans différentes langues, il est compris comme objet (objet), enregistrement (enregistrement), structure ( >struct), dictionnaire (dictionnaire), table de hachage (table de hachage), liste de clés (liste à clés), ou tableau associatif (tableau associatif). Une liste ordonnée de valeurs). Dans la plupart des langues, il est compris comme un tableau (array). PHP

sérialiser

consiste à sérialiser les variables et à renvoyer un type de variable et expressions de chaîne structurelles. En parlant de cela, les deux incarnent une structure de données sous la forme d'une chaîne. Alors, quelle est la différence entre elles ? Commençons par JSON

et regardons un exemple simple.

Programme1 :

var test = {"Name":"Peter","Age":20};  
 
document.write(test.Name + ": " + test.Age);


Afficher les résultats :

Peter: 20


Variabletest dans {"Name":"Peter","Age":20} est une variable avec Objet de 2 éléments (ressemble à un tableau de PHP) : Nom est Pierre, Âge est 20.

Bien sûr, cela peut aussi devenir plus compliqué :

Programme2

var test = {"User":{"Name":"Peter","Age":20},"Company":"FORD"};  
 
document.write(test.User.Name + ": " + test.Company);


Spectacle résultats :

Peter: FORD


Dans cet exemple Utilisateur L'élément contient Nom et Âge.

Si vous souhaitez refléter plusieurs Utilisateurs, vous devez utiliser un tableau, qui est différent du "{}" de l'objet, utilisez "[]" pour les tableaux.

Programme3 :

var test = [  
           {"User":{"Name":"Peter","Age":20},"Company":"FORD"},  
           {"User":{"Name":"Li Ming","Age":20},"Company":"Benz"}  
       ];  
document.write(test[1].User.Name + ": " + test[1].Company);  
//或者使用:document.write(test[1]["User"]["Name"] + ": " + test[1]["Company"]);

Afficher les résultats :

Li Ming: Benz

通过以上简单实例就能将一些复杂数据通过一个字符串来进行传递,再配合上Ajax的确是方便很多。

 

下面再来看看PHPserialize函数的作用。

 

程序4

$arr = array 
         (  
        'Peter'=> array 
       (  
        'Country'=>'USA',  
        'Age'=>20  
        ),  
          'Li Ming'=> array 
        (  
        'Country'=>'CHINA',  
        'Age'=>21  
       )  
       );  
$serialize_var = serialize($arr);  
echo $serialize_var;

 

显示结果:

a:2:{s:5:"Peter";a:2:{s:7:"Country";s:3:"USA";s:3:"Age";i:20;}s:7:"Li Ming";a:2:
{s:7:"Country";s:5:"CHINA";s:3:"Age";i:21;}}

 

这个结果看上去比JSON要复杂一些,其实也很简单,它说明的就是一些数据类型和结构。

 

a:2:{s:7:"Country";s:3:"USA";s:3:"Age";i:20;}为例:

 

a:2说明这是个有两个元素的数组(array),s:7:"Country";s:3:"USA";为第一个元素,s:7说明这是有7个字符的字符串(string),后面i:20;也应该猜得到是整数(integer20

 

再来看一下这个例子:

 

程序5

class test   
{  
  var $var = 0;  
   function add(){  
      echo $var+10;  
   }  
 }   
$unserialize_var = new test;  
$serialize_var = serialize($unserialize_var);  
echo $serialize_var;  
$unserialize_var = null;  
$unserialize_var = unserialize($serialize_var);  
$unserialize_var->add();

 

显示结果:

 O:4:"test":1:{s:3:"var";i:0;} 
 10

 

从这个例子中可以看出来,serialize对数据的类型和结构都进行的保存,unserialize后的变量仍然可以使用add()方法。

 

那么PHPJSON有没有联系呢,熟悉PHP的朋友应该了解PHP5.2.0已经将JSON extension设置为默认组件,也就是说我们可以在PHP中进行JSON操作,其函数为json_encodejson_decode

 

程序6

$arr = array 
       (  
         'Name'=>'Peter',  
          'Age'=>20  
      );      
$jsonencode = json_encode($arr);   
echo $jsonencode;

 

显示结果:

 

{"Name":"Peter","Age":20}


 

这个结果和例一中test值是一样的,通过json_encodePHP中的变量转换为JSON字符出表达式。

 

再来看看json_decode的用法。

 

程序7

$var = '{"Name":"Peter","Age":20}';  
 
$jsondecode = json_decode($var);  
 
print_r($jsondecode);


 

显示结果:

 

stdClass Object ( [Name] => Peter [Age] => 20 )


 

这的确验证了,在JSON{"Name":"Peter","Age":20}是一个对象,但是在PHP中也可以将其转为数组,在json_decode中将ASSOC参数设置为True即可。

 

程序8

$var = '{"Name":"Peter","Age":20}';  
 
$jsondecode = json_decode($var,true);  
 
print_r($jsondecode);


 

显示结果:

 

Array ( [Name] => Peter [Age] => 20 )

 

另,需要注意的是JSON是基于Unicode格式,所以要进行中文操作要将其转化为UTF-8格式。

 

通过上面这些例子相信大家对于JSONPHPserializejson_encode都有了初步了解,结合PHPJavascriptJSON以及Ajax就可以完成强大的数据交互功能。

 

 相关推荐:

xamarin用get的方法把json值传给php写的服务端登录页

解析Json字符串方法总结

js传递json参数到controller步骤分析

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:
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