Json簡介
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於JavaScript的一個子集,這意味着JavaScript可以直接讀取Json,非常方便。
Json的具體形式是:
1.對象
對象是一個無序的“‘名稱/值’對”集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”後跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔。
例如: {“username”: “Eric”,”age”:23,”sex”: “man”}
代碼示例:
<script type="text/javascript"> function getUser()
{
var user = {
"username": "Eric",
"age":23,
"family": {"mother":"Marry","father":"Alon","brother":"Tom"}
}; alert( user.username ); alert( user.age ); alert(user.family.brother);
} getUser(); </script>
2、數組
數組是值(value)的有序集合。一個數組以“[”(左中括號)開始,“]”(右中括號)結束。值之間使用“,”(逗號)分隔。
例如: ["Eric",23, "man"]
代碼示例:
<script type="text/javascript"> function getArray() { var arr = ["Jarry",23, ["www.xiaophper.com","[email protected]"]]; alert(arr[0]); alert(arr[1]); alert(arr[2][0]); alert(arr[2][1]); } getArray(); </script>
注意:對象和數組兩種形式在JS中的調用時不一樣啊,對象用“.”調用,數組用下標[0]、[1]調用。還要注意在傳遞Json串時string類型的值要用引號括起來。
PHP中將數組轉變成Json
強大的PHP已經提供了內置函數:json_encode() 和 json_decode()。很容易理解,json_encode()就是將PHP數組轉換成Json。相反,json_decode()就是將Json轉換成PHP數組。
例如:
$array = array("name" => "Eric","age" => 23); echo json_encode($array);
程序將打印出 : {“name”:”Eric”,”age”:23}
再看下面的例子:
$array = array(0 => "Eric", 1 => 23); echo json_encode($array);
程序將打印出 :["Eric",23]
以上兩個例子可以看出,如果PHP數組的鍵都是數字,那麼json_encode()返回一個數組形式的Json,如果PHP數組的鍵全是字符串。那麼json_encode()就會返回一個對象形式的Json。剛已經說過。兩者在js中的調用是不同的。
事實上,只要在PHP數組的鍵中有一個字符串形式的鍵,那麼json_encode()就會返回對象形式的Json。這是不正確的。因爲,雖然在PHP代碼中不會出現錯誤,但要是將這樣的Json傳給JS函數,JS會將此Json當做一個對象,而對象是不可能以數字作爲屬性名的。也就是說JS 不知道這是什麼 : user.0.username (中間是數字零)
PHP數組與JSON格式的轉換
php提供了函數可以直接進行轉換:
(1) json_encode : php數組 ---> json字符串
(2) json_decode : json字符串 ---> php數組(需要設置第二個參數爲true)
$json_arr = array('WebName'=>'PHP網站開發教程網','WebSite'=>'http://www.jb51.net');
$php_json = json_encode($json_arr); //把php數組格式轉換成 json 格式的數據
echo $php_json;
$php_arr = json_decode($php_json); //再把json格式的數據轉換成php數組
print_r($php_arr);
-------------------------------------------------------------------------
json數組
$json = '[{"id":"22","name":"33","descn":"44"}]'; //json格式的數組轉換成 php的數組
$arr = (Array)json_decode($json);
echo $arr[0]->id; //用對象的方式訪問