json格式php
❶ php json如何轉換成字元串
php json轉換成字元串的方法:1、使用【json_decode()】函數對JSON格式的字元串進行編碼;2、使用【json_encode】函數對變數進行JSON編碼。
推薦:《PHP視頻教程》
php json數據轉化為字元串
json數據本身就是一個字元串。
如果說轉換,只是說,php數組和json字元串之間的轉化,在這里給你介紹php操作json的兩個函數
json_decode() 對 JSON 格式的字元串進行編碼 說明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一個 JSON 格式的字元串並且把它轉換為 PHP 變數 參數 json 待解碼的 json string 格式的字元串。 assoc 當該參數為 TRUE 時,將返回 array 而非 object 。
返回值 Returns an object or if the optional assoc parameter is TRUE, an associative array is instead returned.
json_encode — 對變數進行 JSON 編碼 Report a bug 說明 string json_encode ( mixed $value [, int $options = 0 ] ) 返回 value 值的 JSON 形式 Report a bug 參數 value 待編碼的 value ,除了resource 類型之外,可以為任何數據類型 該函數只能接受 UTF-8 編碼的數據
❷ php如何發送和接收JSON數據
對於json,PHP有對應的方法進行操作。
一般而言,json會以字元串形式傳給PHP腳本,一般都是放在$_POST裡面,
14
<?php
// 接收
$json_parameter = $_POST['json_str'];
// 處理, 變成數組
$array = json_decode($json_parameter);
// PHP 把數組數據變成json格式字元串,發給頁面
$demo = array(
'key' => 'value',
'key2' => 'value2'
);
$demo_json = json_encode($demo); // 格式是{"key":"value","key2":"value2"}
echo $demo_json;
❸ php的幾種常用的數據交換格式
序列化(serialize)、變數、xml、json是PHP常見的4種文本數據交換形式。
一、序列化與反序列化
使用serialize與unserialize將可以將任何數據類型(除了資源),格式成文本數據格式,是php內置的,使用最方便,可以原汁原味將數據、對象等保存與恢復再用。
好處:使用方便,支持好。
不好:沒有通用性只有php能夠支持,文本化體積大。
可能:速度可能會慢。
二、變數
將數據寫成標準的PHP賦值語句存放在文本文件中,在程序執行過程中包含進來,通過執行賦值的操作來恢復變數。discuz經常使用這種方式做為數據的緩存。
好處:直觀。
不好:沒有通用性只有php能夠支持;使用不方便,需要自己將數據轉化成賦值語句;變數的接收方式也不夠靈活。
可能:速度會快些,與序列化相比存儲體積小。
三、xml
將數據格式化成xml存儲與解析。
好處:通用性強,可以與其它程序語言的數據交換;php已經有內置的函數支持。
不好:文本化的體積大;格式化與反解效率低。
四、json
也是類似於xml的一種文本型數據交換格式。是一種為解決xml瀏覽器數據交換復雜而出現一種新的數據格式。
好處:通用性強,目前主流的語言已經內置支持了,5.2(具體請查手冊)版本已經內置支持。php5以後使用很方便,使用方便與序列化類似。與xml相比有更好的兼容性、效率高,尤其是對於瀏覽器。而數據格式體積很小。
可能:效率問題,尤其是解析的效率問題。
❹ php如何輸出中文json格式字元串
php如何輸出中文json格式字元串
如何對json格式的字元串進行轉換,php提供了兩個函數:
json_encode 對變數進行 JSON 編碼
json_decode 對 JSON 格式的字元串進行編碼
下面看個實例:
$arr = ['a', 'b', 'c'];echo json_encode($arr);
輸出為:
["a","b","c"]
但是,當我們在數組中放入中文的時候,就會出現問題:
$arr = [ '世界', '你好',
];echo json_encode($arr);
輸出的結果為:
["\u4e16\u754c","\u4f60\u597d"]
這個結果顯然不是我們想要的,但是為什麼出現這個呢?
因為當我們的值中包含中文時,php對他進行json編碼時底層會對中文進行unicode編碼,導致結果不可讀,那該怎麼解決呢?
方法一
可以利用 urlencode 和 urldecode 方法繞過這個轉碼為 unicode 的過程,先將中文欄位進行urlencode,然後json_encode,最後再用urldecode處理結果,便可以正常顯示中文。具體代碼如下:
$arr = [ '世界', '你好',
];echo urldecode(json_encode(array_map('urlencode', $arr)));
輸出結果為:
["世界","你好"]
方法二
自PHP5.4版本,官方就已經給Json新增了一個選項: JSON_UNESCAPED_UNICODE。加上這個選項後,就不會自動把中文編碼了。具體代碼如下:
$arr = [ '世界', '你好',
];echo json_encode($arr, JSON_UNESCAPED_UNICODE);
["世界","你好"]
看吧,這才是我們想要的結果 :)
❺ php怎麼接收json類型數據
PHP接收JSON格式的數據
在API服務中,目前流行採用json形式來交互。
給前端調用的介面輸出Json數據,這個比較簡單,只需要組織好數據,用json_encode($array) 轉化一下,前端就得到json格式的數據。
接收前端提交的json數據稍微復雜一點,原因是:PHP默認識別的數據類型是application/x-www.form-urlencoded標準的數據類型。因此,對型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之類的內容無法解析,如果用$_POST數組來接收就會失敗!
此時可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 來獲取提交的數據
查看手冊,可以發現$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的區別:
$_POST:通過 HTTP POST 方法傳遞的變數組成的數組,是自動全局變數。
$GLOBALS['HTTP_RAW_POST_DATA'] :總是產生 $HTTP_RAW_POST_DATA 變數包含有原始的 POST 數據。此變數僅在碰到未識別 MIME 類型的數據時產生。$HTTP_RAW_POST_DATA 對於 enctype="multipart/form-data" 表單數據不可用。也就是說基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一樣的。但是如果post過來的數據不是PHP能夠識別的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']來接收,比如 text/xml 或者 soap 等等。
補充說明:PHP默認識別的數據類型是application/x-www.form-urlencoded標準的數據類型。