天天看點

php json 二進制資料,PHP 操作 JSON 格式資料

JSON(JavaScript Object Notation, JS 對象标記) 是一種輕量級的資料交換格式。它基于 ECMAScript (w3c制定的js規範)的一個子集,采用完全獨立于程式設計語言的文本格式來存儲和表示資料。簡潔和清晰的層次結構使得 JSON 成為理想的資料交換語言。 易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網絡傳輸效率。

想要用 PHP 操作 JSON 就離不開下面兩個函數:json_decode(); // 對JSON格式的字元串進行解碼

json_encode(); // 對變量進行 JSON 編碼

這裡先說 json_decode 對 JSON 格式的字元串進行解碼,前端上傳的 JSON 資料對于 PHP 來說就是字元串,json_decode 可以把 JSON 字元串轉換為 PHP 對象。

JSON 解碼 & 操作

下面是一個 PHP 寫的 JSON 字元串:$json = '{"user": "Administrator", "password": "123456"}';

如果不經過轉換是不能直接操作的,即使用正規表達式也很難,如果直接輸出的話還是一樣的字元串:{"user": "Administrator", "password": "123456"}

這裡就需要用到 json_decode 來轉換,需要傳入要轉換的 JSON 字元串,傳回轉換後的 PHP 對象:$json = '{"user": "Administrator", "password": "123456"}'; // JSON字元串

$json = json_decode($json); // JSON字元串解碼

現在就可以操作這個 JSON 對象了:echo $json->user; // 輸出使用者

echo $json->password; // 輸出密碼

這是一個很簡單的 JSON 資料,JSON 資料是可以包含數組和多層嵌套的,

下面是一個稍微有點難度的 JSON 資料:{

"user": "Administrator",

"password": "123456",

"phone_num": [

"13011112222",

"15522222222",

"13988888888"

],

"friends": [

{

"name": "馬雲",

"age": "54"

},

{

"name": "馬化騰",

"age": "47"

},

{

"name": "李彥宏",

"age": "50"

}

]

}echo $json->user; // 輸出使用者

echo $json->password; // 輸出密碼

for($i = 0;$i < count($json->phone_num);$i ++) {

echo $json->phone_num[$i]; // 輸出手機号

}

for ($i = 0;$i < count($json->friends);$i ++) {

echo $json->friends[$i]->name; // 輸出好友名字

echo $json->friends[$i]->age; // 輸出好友年齡

}

JSON 的字段名和值用冒号分隔,數組寫在方括号裡,對象寫在花括号裡,JSON對 象裡可以包含數組,數組裡也可以包含 JSON 對象,隻要知道了 JSON 的文法結構,無論在複雜的 JSON 資料也能迎刃而解。

JSON 編碼

最後來說一下 json_encode 對 PHP 變量進行 JSON 編碼,也就是把 PHP 變量或對象轉換為 JSON 字元串,常用于輸出資料給前端。通常情況下在資料庫查詢出資料後為了便于操作都會把資料轉換為 PHP 數組,可以直接輸出到頁面,但如果前端使用 AJAX 請求的話就不能直接輸出數組了,這時候就需要用 json_encode 把數組轉換為 JSON 字元串,友善前端解析。

下面是一個 PHP 數組:$data = array(

array(

"name" => "小明",

"age" => 10

),

array(

"name" => "小強",

"age" => 8

),

array(

"name" => "小李",

"age" => 10

)

);

如果直接用 print_r 輸出的話前端是不能解析的,這裡使用 json_encode 對數組進行編碼:$data = json_encode($data);

傳入要編碼的 PHP 變量或對象,傳回編碼後的 JSON 字元串,下面是經過 JSON 編碼後的效果:[

{

"name": "小明",

"age": 10

},

{

"name": "小強",

"age": 8

},

{

"name": "小李",

"age": 10

}

]

前端收到這個 JSON 字元串後在把這個字元串轉換為 JSON 對象就可以使用了。