调用企业信息查询接口展示数据并对外提供接口遇到的问题
2016-12-20 14:45
351 查看
一、调用接口后获取的json数据将其json_decode()后为对象格式。不好对其进行处理。
解决:
只要在json_decode($str,true);设置第二个参数为true;就会把json形式数据转化成数组。
二、想对外提供接口,要从数据库中取出数据,json_encode()后,中文数据出现编码问题。
如:\u901a\u8baf\u5f55\uff0c\u662f\u738b\u67cf\u5143\u81ea\u4e3b\u5f00\
原因分析:
在存储到数据库时!MySQL 不会存储 unicode 字符:MySQL 仅支持从基本的多语种平面字符 (0×0000-0xFFFF)。请尝试存储一个同义词相反:)
更新: MySQL 5.5.3 上 (其中尚未 GA), 支持补充字符如果您使用 UTF8MB4 编码。
json_encode中文的时候,会把每个中文字符encode成“uxxxx”,而存进数据库的时候,“”被屏蔽了,直接变成”uxxxx”
解决:
方法①:对json_encode()设置第二个参数
$json = json_encode($array,JSON_UNESCAPED_UNICODE);//php版本>5.4
方法②:遍历已有数组,将每个值 urlencode 一下,再用urldecode将值反解
foreach($arr as $key=>&$value){
if($key == "Result"){
foreach($value as $k=>&$v){
$value[$k] = urlencode($v);
}
}else{
$arr[$key] = urlencode($value);
}
}
//用urldecode将值反解
$html = urldecode(json_encode($arr));
三、对调用接口得到的数据在前台进行分页显示
解决:
将json格式的数据json_decode($str;true)转换成数组后,利用array_slice()函数对数组进行分页。
/* 构造分页地址 */
if (isset($this->request->get['page'])) {
$page = $this->request->get['page'];
if($page<1){
$page = 1;
}
} else {
$page = 1;
}
$count = 5;
$start = ($page-1)*$count; //计算每次分页的开始位置
$end = $start+$count;
$countpage = ceil($data['num']/$count);//计算总页面数
$pagedata = array();
$pagedata = array_slice($result,$start,$end);
$data['result'] = $pagedata;
$data['countpage'] = $countpage;
$data['page'] = $page;
$data['keyword'] = $keyword;
解决:
只要在json_decode($str,true);设置第二个参数为true;就会把json形式数据转化成数组。
二、想对外提供接口,要从数据库中取出数据,json_encode()后,中文数据出现编码问题。
如:\u901a\u8baf\u5f55\uff0c\u662f\u738b\u67cf\u5143\u81ea\u4e3b\u5f00\
原因分析:
在存储到数据库时!MySQL 不会存储 unicode 字符:MySQL 仅支持从基本的多语种平面字符 (0×0000-0xFFFF)。请尝试存储一个同义词相反:)
更新: MySQL 5.5.3 上 (其中尚未 GA), 支持补充字符如果您使用 UTF8MB4 编码。
json_encode中文的时候,会把每个中文字符encode成“uxxxx”,而存进数据库的时候,“”被屏蔽了,直接变成”uxxxx”
解决:
方法①:对json_encode()设置第二个参数
$json = json_encode($array,JSON_UNESCAPED_UNICODE);//php版本>5.4
方法②:遍历已有数组,将每个值 urlencode 一下,再用urldecode将值反解
foreach($arr as $key=>&$value){
if($key == "Result"){
foreach($value as $k=>&$v){
$value[$k] = urlencode($v);
}
}else{
$arr[$key] = urlencode($value);
}
}
//用urldecode将值反解
$html = urldecode(json_encode($arr));
三、对调用接口得到的数据在前台进行分页显示
解决:
将json格式的数据json_decode($str;true)转换成数组后,利用array_slice()函数对数组进行分页。
/* 构造分页地址 */
if (isset($this->request->get['page'])) {
$page = $this->request->get['page'];
if($page<1){
$page = 1;
}
} else {
$page = 1;
}
$count = 5;
$start = ($page-1)*$count; //计算每次分页的开始位置
$end = $start+$count;
$countpage = ceil($data['num']/$count);//计算总页面数
$pagedata = array();
$pagedata = array_slice($result,$start,$end);
$data['result'] = $pagedata;
$data['countpage'] = $countpage;
$data['page'] = $page;
$data['keyword'] = $keyword;
相关文章推荐
- SuperMap:Iclient调用IServer接口查询数据,加载数据集信息
- 利用百度车联网提供的天气查询接口用python查询天气信息以及安卓(Java)利用gson解析数据
- Dubbo消费者调用提供者接口接受spark查询的mysql数据问题
- 调用EF的存储过程报“存储区数据提供程序返回的数据读取器所具有的列数对于所请求的查询不够”问题
- 调用EF的存储过程报“存储区数据提供程序返回的数据读取器所具有的列数对于所请求的查询不够”问题
- 发布NBearLite v1.0.0: 提供强类型查询语法的非ORM数据访问组件 [8/2 更新至v1.0.0.9 beta - 修复NBearLite参考手册某些操作系统打开错误的问题]
- Silverlight3+WCF遇到的问题(一):调试资源字符串不可用。密钥和参数通常提供足够的信息用以诊断该问题
- 查询快递中,快递公司数据信息的问题
- sqlite3 调用sqlite3_exec查询数据时callback函数abort问题
- C# 调用非托管dll提供接口参数 结构类型 的转换问题。
- MySQL调用JDBC查询数据全部加载的问题
- Flex调用java展示数据的一些问题
- java调用PHP接口时,遇到问题
- SILVERILGHT开发遇到调试资源字符串不可用,键和参数通常会提供足够的信息来诊断问题的解决
- 在 SQL Server 中查询EXCEL 表中的数据遇到的各种问题
- 发布NBearLite v1.0.0: 提供强类型查询语法的非ORM数据访问组件 [8/2 更新至v1.0.0.9 beta - 修复NBearLite参考手册某些操作系统打开错误的问题]
- mysql 设计遍历查询结果中的每行数据遇到的诸多问题
- 云计算安全不安全?43%的受访企业曾经遇到云端服务商发生信息安全问题
- cxf调用.net webservice 接口遇到的问题(尚未解决)
- 解决手机数据连接不能查询天气信息的问题