调用企业信息查询接口展示数据并对外提供接口遇到的问题

一、调用接口后获取的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;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值