phpjson處理
⑴ php 輸出json及顯示json中的中文漢字詳解及實例
php
輸出json及顯示json中的中文漢字
在php中,我們經常需要將數組輸出json,只需要使用json_encode函數處理一下數組即可,但有的時候數組裡面有中文,使用json_encode函數處理後中文字元被編碼成了Unicode,如何才能在json中顯示中文呢?請看下文。
首先介紹一下php輸出json格式:
一種最簡單的用法,就是把數組直接輸出為json,如下:
<?php
$arr
=
array('p1'=>'ni"hao','p2'=>2,'ch'=>'碼農你好!');
$json
=
json_encode($arr);
echo
$json;
?>
輸出的結果為:
{"p1":"ni\"hao","p2":2,"ch":"\u7801\u519c\u4f60\u597d\uff01"}
這里要注意:
雙引號在json中會被自動編碼為\",這個很好理解,js中字元串中是不允許出來單引號、雙引號和反斜杠的。
中文字元被編碼成了Unicode
如果是寫介面,那直接這樣輸出就夠了,中文無需去做處理。等到了客戶端,再去把Unicode的中文轉成漢字即可。但如果要在伺服器端直接輸出漢字出來,那我們可以做如下處理。
<?php
$arr
=
array('p1'=>'nihao','p2'=>2,'ch'=>'碼農你好!');
$json
=
json_encode($arr);
echo
decodeUnicode($json);
function
decodeUnicode($str){
return
preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
create_function(
'$matches',
'return
mb_convert_encoding(pack("H*",
$matches[1]),
"UTF-8",
"UCS-2BE");'
),
$str);
}
?>
輸出:
{"p1":"ni\"hao","p2":2,"ch":"碼農你好!"}
這個操作很簡單,其實就是把輸出結果匹配一下,把Unicode還原成了漢字。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
⑵ php 處理json字元串的問題
$json='{"a":1,"b":2,"c":3,"d":4,"e":5}';
//已數組形式返回
$a=json_decode($json,TRUE);
//為對應鍵值的變數賦值
foreach($aas$k=>$v){
eval('$'.$k.'='.$v.';');
}
//實測有效
echo$a;
echo'<p>';
echo$b;
echo'<p>';
echo$c;
echo'<p>';
echo$d;
echo'<p>';
echo$e;
echo'<p>';
上面的方法也是正確的,怎麼取捨看你的程序需求
⑶ php獲得api返回的json數據後,如何解析
首先你需要使用對方約定方式獲取,然後考慮是否使用緩存,最後獲取到數據後使用json_decode函數解析成數組格式,接下來就是自己的邏輯代碼了。
⑷ php如何解析這種JSON
目前,JSON已經成為最流行的數據交換格式之一,各大網站的API幾乎都支持它。
從5.2版本開始,PHP原生提供json_encode()和json_decode()函數,前者用於編碼,後者用於解碼。
一、json_encode()
該函數主要用來將數組和對象,轉換為json格式。先看一個數組轉換的例子:
$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}
由於json只接受utf-8編碼的字元,所以json_encode()的參數必須是utf-8編碼,否則會得到空字元或者null。當中文使用GB2312編碼,或者外文使用ISO-8859-1編碼的時候,這一點要特別注意。
二、索引數組和關聯數組
PHP支持兩種數組,一種是只保存"值"(value)的索引數組(indexed array),另一種是保存"名值對"(name/value)的關聯數組(associative array)。
由於javascript不支持關聯數組,所以json_encode()只將索引數組(indexed array)轉為數組格式,而將關聯數組(associative array)轉為對象格式。
比如,現在有一個索引數組
$arr = Array('one', 'two', 'three');
echo json_encode($arr);
結果為:
["one","two","three"]
三、類(class)的轉換
下面是一個PHP的類: class Foo { const ERROR_CODE = '404'; public $public_ex = 'this is public'; private $private_ex = 'this is private!'; protected $protected_ex = 'this should be protected'; public function getErrorCode() { return self::ERROR_CODE; } }
現在,對這個類的實例進行json轉換:
$foo = new Foo;
$foo_json = json_encode($foo);
echo $foo_json;
輸出結果是
{"public_ex":"this is public"}
可以看到,除了公開變數(public),其他東西(常量、私有變數、方法等等)都遺失了。
⑸ PHP 如何處理一串JSON 返回給我一個ID數組呢
<?php
$arr='[{"id":1,"gid":0,"title":"小紅"},{"id":2,"gid":0,"title":"小明"},{"id":3,"gid":0,"title":"小藍"},{"id":4,"gid":0,"title":"小白"},{"id":5,"gid":7,"title":"小嘿"},{"id":6,"gid":8,"title":"小網"},{"id":7,"gid":9,"title":"小王"},{"id":8,"gid":4,"title":"小2"},{"id":9,"gid":3,"title":"小3"},{"id":10,"gid":2,"title":"小8"},{"id":11,"gid":2,"title":"小7"},{"id":12,"gid":7,"title":"小7"}]';
$arr_list=json_decode($arr,1);
$id_pid=null;
$list=null;
foreach($arr_listas$key=>$val){
$id_pid[$val['id']]=$val['gid'];
$list[$val['id']]=$val;
}
functiongetChild($id,$id_pid,$child=array()){
if(count($child)==0)$child[]=$id;
$res=array_keys($id_pid,$id);
if(count($res)>0){
$child=array_merge($child,$res);
foreach($resas$val){
$child=getChild($val,$id_pid,$child);
}
}
return$child;
}
$id=3;
echo'<pre>';
print_r(getChild($id,$id_pid));
echo'</pre>';
exit();
結果:
⑹ PHP json格式處理
可以用正則
$jsonStr='{"db":"[{"0":"9","id":"9"},{"0":"9","id":"9"},]"}';
$jsonStr=preg_replace('/['"]([.*?])['"]/iU','$1',$jsonStr);//去除json串中,數組外的引號,將形如"[{...}]"替換成[{...}]
$jsonStr=preg_replace('/,s*]/',']',$jsonStr);//去除json串中多餘的逗號
字元串替換:
$jsonStr=str_replace('"[','[',$jsonStr);
$jsonStr=str_replace(',]"',']',$jsonStr);
⑺ php 處理json字元串
這個PHP 本身有二個函數 :
1. json_encode( array 或 object) 這個是用來把對象 或 數組轉換為 JSON格式數據;
2. json_decode(string , boolen[數組為true,對象不用設置]) 這個是把現有的JSON數據轉化為 PHP 數組或對象.
式例:
$a = array(1 => 'a', 2 => 'b', 3 => 'c', 4 => 'd');
$b = json_encode($a);
echo $b; // 這里得到字串 "{"1":"a","2":"b","3":"c","4":"d"}"
$c = json_decode($b, true);
var_mp($c); // 這里得到$a數組
如果JSON數據是一個數據, 轉化時建議把json_decode函數的第二個參數設為true, 對象則不用.
希望可以幫到你
⑻ PHP怎樣實現json
PHP實現json的方式比較簡單。把要實現json的數據封裝成數組,然後調用json_encode函數即可生成json數據。示例如下:
<?php
$arr=array('name'=>'chinawinxp','fix'=>'www');
echojson_encode($arr);
//{"name":"chinawinxp","fix":"www"}
?>
⑼ php 解析json
然後因為節氣的方式可以通過一件肉的來接觸
⑽ 求大神解答,這種json用php怎麼處理
$ary=json_decode($jsonStr);
之後print_r($ary);你可以看一下,可以把json格式轉換為數組,可以直接對數組進行操作。