ホームページ  >  記事  >  バックエンド開発  >  PHP Json 解析

PHP Json 解析

墨辰丷
墨辰丷オリジナル
2018-05-15 16:44:505881ブラウズ

この記事では主に PHP Json の解析について紹介します。興味のある方はぜひ参考にしてください。

JSON (JavaScript Object Notation) は軽量のデータ交換形式です。人間にとって読み書きしやすい。機械による解析と生成も簡単です。これは、JavaScript プログラミング言語、標準 ECMA-262 第 3 版 - 1999 年 12 月 のサブセットに基づいています。 JSON は完全に言語に依存しないテキスト形式を採用していますが、C 言語ファミリー (C、C++、C#、Java、JavaScript、Perl、Python などを含む) と同様の習慣も使用します。 )。これらの機能により、JSON は理想的なデータ交換言語になります。

JSON は 2 つの構造から構築されます:

"Name/Value"ペアのコレクション () 名前と値のペアのコレクション)。さまざまな言語では、オブジェクト (object)、レコード (record)、構造 (struct)、辞書 (dictionary)、ハッシュテーブル ( hash) として理解されます。テーブル)、キー付きリスト (キー付きリスト)、または連想配列 (連想配列)。値の順序付きリスト。ほとんどの言語では、配列 (array) として理解されます。

PHP

serialize は、変数をシリアル化して、変数の型と構造を含む文字列式を返すことです。 そういえば、どちらも文字列データ構造の形式で表現されます。それらの違い。

JSONから始めて、簡単な例を見てみましょう。

プログラム1:

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


表示結果:

Peter: 20


変数テスト{"名前" :"Peter","Age":20}2要素を持つオブジェクトです(PHPの配列のような感じです): NamePeter, 年齢20です。

もちろん、より複雑になる可能性もあります:

プログラム 2:

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


結果を表示中:

Peter: FORD


この例では、User 要素には NameAge が含まれています。

複数のUserを反映したい場合は、オブジェクトの"{}"とは異なり、配列を使用する必要があります。

プログラム

3

:

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"]);

表示結果:

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步骤分析

以上がPHP Json 解析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。