首頁  >  文章  >  後端開發  >  PHP JSON 操作

PHP JSON 操作

WBOY
WBOY原創
2016-08-08 09:31:20844瀏覽

       由於JSON可以在多種程式語言中使用,所以我們可以用來做小型資料中轉,如:PHP輸出JSON字串供JavaScript使用等。在PHP中可以使用 json_decode() 由一串規範的字串解析出 JSON對象,使用 json_encode() 由JSON 物件產生一串規範的字串。

例:

$json = '{"a":1, "b":2, "c":3, "d":4, "e":5 }';

var_dump(json_decode($json));

var_dump(json_decode($json,true));

輸出:

["a"] => int(1)["b"] => int(2)
["c"] => int(3)
[ "d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo json_encode($arr);

輸出:

{"a":1,"b":2,"c":3,"d":4,"e":5}

1. json_decode(),字元轉JSON,一般用在接收到Javascript 發送的資料時會用到。

$s='{"webname":"homehf","url":"www.homehf.com","contact":{"qq":"744348666","mail":"nieweihf @163.com","xx":"xxxxxxx"}}';$web=json_decode($s);
echo '網站名稱:'.$web->webname.'
網址:'. $web->url.'
聯絡方式:QQ-'.$web->contact->qq.' MAIL:'.$web->contact->mail;
?>

上面的例子中,我們先定義了一個變數s,然後用json_decode()解析成JSON對象,之後可以按照JSON的方式去使用,從使用情況看,JSON和XML以及數組實現的功能類似,都可以儲存一些彼此之間存在關係的數據,但是個人覺得JSON比較容易使用,而且可以使用JSON和JavaScript實作資料共享。

2. json_encode(),JSON轉字符,這個一般在AJAX 應用中,為了將JSON對象轉化成字符串並輸出給 Javascript 時會用到,而向數據庫中存儲時也會用到。

$s='{"webname":"homehf","url":"www.homehf.com","contact":{"qq":"744348666","mail":"nieweihf @163.com","xx":"xxxxxxx"}}';$web=json_decode($s);
echo json_encode($web);
?>

二 .PHP JSON 轉數組

$s='{"webname":"homehf","url":"www.homehf.com","qq":"744348666"}';$web=json_decode($s) ; //將字元轉成JSON
$arr=array();
foreach($web as $k=>$w) $arr[$k]=$w;
print_r($arr);
?>

上面的程式碼中,已經將一個JSON物件轉成了一個數組,可是如果是巢狀的JSON,上面的程式碼顯然無能為力了,那麼我們寫一個函數解決巢狀JSON,

$s='{"webname":"homehf","url":"www.homehf.com","contact":{"qq":"744348666","mail":"nieweihf @163.com","xx":"xxxxxxx"}}';$web=json_decode($s);
$arr=json_to_array($w​​eb);
print_r($arr);
function json_array($w​​eb ){
$arr=array();
foreach($web as $k=>$w){
    if(is_object($w)) $arr[$k]=json_to_array($w​​); //判斷型別類型是否為object
    else $arr[$k]=$w;
}
return $arr;
}
?>

以上就介紹了PHP JSON 操作,包括了方面的內容,希望對PHP教程有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn