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格式转换为数组,可以直接对数组进行操作。