phpjsongbk
⑴ 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 json_encode函数进行中文转换
在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式,但是转换后的中文会变成Unicode编码。x0dx0a[php] view plainprint?x0dx0a'希亚', x0dx0a 'Age'=>20 x0dx0a ); x0dx0a x0dx0a$jsonencode = json_encode($arr); x0dx0aecho $jsonencode; x0dx0a?> x0dx0a程序运行结果如下:x0dx0a[php] view plainprint?x0dx0a{"Name":null,"Age":20} x0dx0ajson_encode 函数中中文被编码成 null 了,Google 了一下,很简单,为了与前端紧密结合,Json 只支持 utf-8 编码,我认为是前端的 Javascript 也是 utf-8 的原因。x0dx0a[php] view plainprint?x0dx0aiconv('gb2312','utf-8','这里是中文标题'), x0dx0a 'body'=>'abcd...' x0dx0a ); x0dx0a x0dx0aecho json_encode($array); x0dx0a?> x0dx0a这个程序的运行结果为:x0dx0a[php] view plainprint?x0dx0a{"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."} x0dx0a数组中所有中文在json_encode之后都不见了或者出现\u2353等。解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。x0dx0a[php] view plainprint?x0dx0a 1000) { x0dx0a die('possible deep recursion attack'); x0dx0a } x0dx0a foreach ($array as $key => $value) { x0dx0a if (is_array($value)) { x0dx0a arrayRecursive($array[$key], $function, $apply_to_keys_also); x0dx0a } else { x0dx0a $array[$key] = $function($value); x0dx0a } x0dx0a x0dx0a if ($apply_to_keys_also && is_string($key)) { x0dx0a $new_key = $function($key); x0dx0a if ($new_key != $key) { x0dx0a $array[$new_key] = $array[$key]; x0dx0a unset($array[$key]); x0dx0a } x0dx0a } x0dx0a } x0dx0a $recursive_counter--; x0dx0a} x0dx0a x0dx0a/************************************************************** x0dx0a * x0dx0a * 将数组转换为JSON字符串(兼容中文) x0dx0a * @param array $array 要转换的数组 x0dx0a * @return string 转换得到的json字符串 x0dx0a * @access public x0dx0a * x0dx0a *************************************************************/ x0dx0afunction JSON($array) { x0dx0a arrayRecursive($array, 'urlencode', true); x0dx0a $json = json_encode($array); x0dx0a return urldecode($json); x0dx0a} x0dx0a x0dx0a$array = array x0dx0a ( x0dx0a 'Name'=>'希亚', x0dx0a 'Age'=>20 x0dx0a ); x0dx0ax0dx0aecho JSON($array); x0dx0a?> x0dx0a这次成功了,运行结果如下:x0dx0a[php] view plainprint?x0dx0a{"Name":"希亚","Age":"20"}
⑶ php mysql 查询输出json_encode
$list=array("amount"=>urlencode(iconv('gb2312','utf-8',$row['amount'])));
echojson_encode($list);
如果你数据库的编码是GBK的话使用以上代码,如果是UTF8则不必使用iconv
$list=array("amount"=>$row['amount']);
echojson_encode($list);
⑷ php提取json数组里面的值怎么提
先把获取的内容打印出来 ,看看是不是正常返回的数据
$filename="http://whois.pconline.com.cn/ipJson.jsp?json=true";
$content=file_get_contents($filename);
$json=@json_decode($content);
if($json){
$city=$json->city;
}else{
echo"json解析失败:".$content;
}
也可以根据你的框架功能,写成日志,方便出错时随时检查
另外 ,json_decode 可以接收一个参数来确定解析成对象还是数组
$content='{"ip":"120.239.177.231","pro":"广东省","proCode":"440000","city":"中山市","cityCode":"442000","region":"","regionCode":"0","addr":"广东省中山市移通","regionNames":"","err":""}';
$json=json_decode($content,true);
echo$json['city'];
参考文档:PHP json_decode
⑸ 如何在PHP中返回Json数据
概述
不对。
返回json用的json_encode()方法没错,但是需要在头部声明格式。
代码解析
php返回需要用json_encode()方法来将需要转换的字符串转换成json编码格式(注意:仅仅更换文件内容,而返回的文件依然为文本格式且编码为gtk)
所以,这里需要在php头部声明
header('Content-Type:text/json;charset=utf-8');
JSON(JavaScriptObject Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
json通常被作为配置文件,常见还有.ini
⑹ 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还原成了汉字。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!