PHP JSON数据处理实例程序用法
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-06 23:21:37 浏览: 评论:0
在php中JSON数据处理最常用的就是直接使用json_encode()与json_decode()函数进行处理,就这两个json处理函数给各位同学详细介绍json在应用中的各种用法.
json_encode(),PHP数据->JSON
json_encode只有一个参数,参数除了resource 类型之外,可以为任何数据类型,但是我们一般是传入数组,代码如下:
- $arr = array(
- "name" => "manson",
- "age" => 23,
- "sex" => 1
- );
- $json_str = json_encode($arr);
- var_dump($json_str);
得出的是json字符串:{"name":"manson","age":23,"sex":1},这时一般是把转换后的字符串输出到前端处理,常用于ajax做数据交互,或者一些前端模板的数据输出。
json_encode需要注意的一个问题就是中文的编码问题,假如PHP页面的编码是非utf-8的,在json_encode之前,必须把有中文内容的部分转换成utf-8编码,否则输出到前端的时候会乱码。解决的方法网上有很多,这里举一个简单的编码转换例子,代码如下:
- $arr = array(
- "name" => "张三",
- "age" => 23,
- "sex" => 1
- );
- $arr['name'] = iconv("gbk","utf-8",$arr['name']);
- $json_str = json_encode($arr);
PHP数据,json_decode有两个参数,第一个参数是待解码的json字符串,传入的一定要是一个合符规范的json格式,其实json_decode就是json_encode的逆过程,代码如下:
- $json_str = '{"name":"manson","age":23,"sex":1}';
- $arr = json_decode($json_str,true);
- var_dump($arr);
这里需要注意的是,json_decode的第2个参数传的是true,意思是解码后返回数组格式,假如传false或是不传第2个参数,解码后将返回对象格式,例如上面的代码返回对象格式是如下代码:
- object(stdClass)#1 (3) {
- ["name"]=>
- string(6) "manson"
- ["age"]=>
- int(23)
- ["sex"]=>
- int(1)
- }
对象格式相对于数组格式来说,取得对应数据的难度会增大,特别对于多层级数据结构,还是转换成数组形式为好,也就是json_decode第2个参数记得传true。
处理提交的JSON数据
POST方式(GET方式也要注意)向PHP提交了一个JSON数据,比如:{"a":1,"b":2}
在PHP中取出这个数据:$s=$_POST['data'] ;//or $_GET['data']
然后这个串取出后是被转义的:{"a":1,"b":2}
如果直接调用:
- $obj = json_decode($s);
- print_r($obj);
- echo $obj->a;
是错误的,会报告错误,如果$s直接定义:$s='{"a":1,"b":2}';则没有问题,所以在PHP中处理JSON时需要进行一下转义处理: $s=stripslashes($_POST['data']) ;这样再进行json解码就可以了.
PHP 获取接口内容,假设接口文件页面为:/api.php?action=open_getBlogList&only_recommend=1&limit=5,那么我们可以使用下面语句获取这个接口文件内容:
- $handle = fopen("/api.php?action=open_getBlogList&only_recommend=1&limit=5","rb");
- $content = "";
- while (!feof($handle)) {
- $content .= fread($handle, 10000);
- }
- fclose($handle);
这样 content 保存的就是 JSON api 内容,PHP 解析 JSON 并显示,原始的内容是无法直接调用的,必须被 PHP 进行进一步处理,才能被调用显示在网页中,在 PHP 5.2 及后续版本中,使用 json_decode() 函数来解析 JSON 数据,将其转换成 PHP 可以调用的数据格式,例如:$content = json_decode($content);
解析之后呢,我们就可以按照 PHP 中调用数组数据的方法一样的调用 JSON 中的数据,这个调用方法需要按照具体的 JSON 数据格式来写,演示请看下面,关于 json_decode 函数的使用,具体看 PHP 手册,这里不再赘述:http://php.net/manual/en/function.json-decode.php
实战 api:细心的朋友会发现 潜行者m 博客的边栏最下面多了一个“友文推荐”模块,里面推荐了一些琼台博客的文章。
友文推荐是琼台博客倡议的一种博客之间交流方式,比传统的友情链接更有效,同时实现了博客内容互补。由于琼台博客的博客程序是他自己本人编写的,所以他提供了 JSON api 接口,可以获取到最新的可推荐的文章。
本人使用 PHP 获取这个 JSON 接口,然后输出到自己博客的边栏中,下面来实战操作一下。
第一步,查看 api 调用方式
根据文档,我使用了 /api.php?action=open_getBlogList&only_recommend=1&limit=5 这样的参数,意思就是调用五条他推荐的文章。
第二步,获取 api 结构数据
很简单,上面说过了,具体代码如下:
- $handle = fopen("/api.php?action=open_getBlogList&only_recommend=1&limit=5","rb");
- $content = "";
- while (!feof($handle)) {
- $content .= fread($handle, 10000);
- }
fclose($handle);先打开这数据文件,然后把所有内容保存到 content 变量中,因为可以肯定 api 数据不会超过 10000个字符,所以用 10000 作为 fread 函数的第二个参数。这样,api 返回的 JSON 数据就保存在了 content 变量中。
第三步,解析并输出内容
使用下面代码解析数据,然后调用输出
- $content = json_decode($content);
- foreach ($content->data as $key) {
- echo '<li><a target="_blank" href="'.$key->b_url.'">'.$key->b_title.'</a></li>';
- }
Tags: JSON 数据处理 实例
相关文章
- ·淘宝API返回的json数据无法用json_decode的问题(2013-12-05)
- ·php中json_encode格式中文问题解决方法(2013-12-06)
- ·php 通过curl post发送json数据实例(2014-01-10)
- ·php json_encode()函数中文编码乱码解决方法(2014-01-16)
- ·PHP中JSON的应用方法(2014-05-19)
- ·php输出json格式数据的例子(2014-06-13)
- ·php中GBK/GB2312页面使用json_decode()中文丢失(2014-07-03)
- ·PHP JSON数据的创建和解析程序代码(2014-07-22)
- ·PHP JSONP跨域实现程序详解(2014-07-22)
- ·PHP 与 js json的通信实例(2014-08-15)
- ·PHP的json_encode使用分析说明(2014-08-27)
- ·php利用json数据实现跨域操作实例(2014-09-02)
- ·Android中的JSONObject和JSONArray解析json数据(2014-09-05)
- ·php解析JSON 数据(2014-09-05)
- ·php检测数据是否为json字符(2014-09-21)
- ·php返回json数据函数例子(2014-09-22)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)