在PHP裡面可以直接用json_decode($str),轉回字串。
為什麼變成一個JSON對象了呢?難道PHP有預設解析?
直接輸出是這樣。
然後直接對其json_decode(,true)是這樣。
回複內容:
在PHP裡面可以直接用json_decode($str),轉回字串。
為什麼變成一個JSON對象了呢?難道PHP有預設解析?
直接輸出是這樣。
然後直接對其json_decode(,true)是這樣。
首先你要明白JSON是什麼,JavaScript Object Notation,意思是JavaScript對象標記法,它是一種基於文本,獨立於語言的輕量級資料交換格式。說白了它就是一段字串,由於並沒有附加額外的標記,JS也可以直接作為對象處理,所以常用於資料交換。
PHP之所以認得JSON字串,是因為PHP庫中有JSON_parser
來解析
這就像是兩個部落之間雖然語言不通,但是約定一種東西做為統一貨幣來交換物品,這個‘物品’就是我們的資料
既然JS能直接處理JSON對象,那為什麼有時AJAX請求拿到的JSON字串還需要轉為JSON對象,這就要分清JSON字串和JSON對象了
JSON字串:指的是符合JSON格式要求的JS字串。如下:
var jsonStr = "{id:'1',name:'Fini',age:30}";
JSON對象:指符合JSON格式要求的JS對象。如下:
var jsonObj = { id: "1", name: "Fini", age: 30 };
在PHP中,相關的操作方法有json_encode
、json_decode
json_encode
理論上可以將除resourse外的任何資料類型轉為JSON格式字串(不過有些時候會失敗~囧~)
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);var_dump(json_encode($arr));/**** result by php5.6 ****/string '{"a":1,"b":2,"c":3,"d":4,"e":5}' (length=31)
json_decode
就是將一個JSON格式字串轉為PHP的array
或object
,這取決於第二個參數(true
/false
)
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';var_dump(json_decode($json));var_dump(json_decode($json, true));/**** result by php5.6 ****/object(stdClass)[1] public 'a' => int 1 public 'b' => int 2 public 'c' => int 3 public 'd' => int 4 public 'e' => int 5array (size=5) 'a' => int 1 'b' => int 2 'c' => int 3 'd' => int 4 'e' => int 5
json_decode 預設轉換為對象,後後面加 ture 才是array
PHP手冊中關於 json_decode 的說明
mixed json_decode ( string $json [, bool $assoc ] )
接受一個 JSON 格式的字串並且把它轉換為 PHP 變數