之因此要用到Json,不少時候是由於使用ajax對象時,程序與JS函數之間的數據交互。由於JS不認識PHP中的數組,PHP也不認識JS中的數組或對象。Json很好的解決了這個問題。javascript
Json簡介php
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於JavaScript的一個子集,這意味着JavaScript能夠直接讀取Json,很是方便。java
Json的具體形式是:
1.對象ajax
對象是一個無序的「‘名稱/值’對」集合。一個對象以「{」(左括號)開始,「}」(右括號)結束。每一個「名稱」後跟一個「:」(冒號);「‘名稱/值’ 對」之間使用「,」(逗號)分隔。json
例如: {「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>
二、數組spa
數組是值(value)的有序集合。一個數組以「[」(左中括號)開始,「]」(右中括號)結束。值之間使用「,」(逗號)分隔。code
例如: ["Eric",23, "man"]對象
代碼示例:
<script type="text/javascript">
function getArray() { var arr = ["Jarry",23, ["www.xiaophper.com","wxyh_999@126.com"]];
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 (中間是數字零)