您的位置:首页 > Web前端 > JavaScript

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

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
相关文章推荐