JSON 学习笔记 使用php
来源:互联网 发布:太祖 知乎 编辑:程序博客网 时间:2024/06/05 07:06
最近在写一个微信的公众平台,在调用有道API的时候,可以选用3种方式,选择使用自己熟悉的XML格式进行数据解析,XML采用树型结构存储信息,按照树的深度,可以访问到相应的数据。而在调用大众点评API的时候,发现默认使用JSON,以前简单地使用过JSON,但并没有系统的学习,才有了这一篇学习笔记。
JSON(JavaScript Object Notation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。先来个事例看一下JSON的样式。
==举例==
<span style="font-size:18px;">{ "firstName": "John", "lastName": "Smith", { "streetAddress": "21 2nd Street", "postalCode": "10021" }, "phoneNumber": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" } ] }</span>从事例中可以看到,JSON格式有以下特点:
1:并列的数据用“,”隔开
2:键值对使用“ :” 对应
3:多组键值对使用“{ }”包含
4:并列数据的集合(数组)用方括号"[ ]"表示
5:键与值均使用双引号包含
======php 使用json数据========
通过php使用json主要有4个函数,参考链接:http://cn2.php.net/json。 使用php的curl库从大众点评API获得来的数据,利用 json_decode( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] ) 第一个参数为json原始字符串。第二个参数,若为true,则函数将string类型的json数据转换成php的array()。第三个参数,用户可以规定遍历深度,默认512。第四个参数不写,表示默认会将large int 转换为float类型,php目前仅支持JSON_BIGINT_AS_STRING 。 这样使用这个函数时,可以直接用访问数组的方式访问数据。
举例1:
<span style="font-size:18px;"><?php$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';var_dump(json_decode($json, true));?></span>输出:
<span style="font-size:18px;">array(5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5)}</span>举例2:
<span style="font-size:18px;"><?php$json = '{"foo-bar": 12345}';$obj = json_decode($json);print $obj->{'foo-bar'}; ?></span>
输出
12345
举例3:
<span style="font-size:18px;">{ "status": "OK", "count": 3, "reviews": [ { "review_id": 49302627, "user_nickname": "HcjTT1314", "created_time": "2013-11-27 23:56", "text_excerpt": "<strong><span style="color:#3333ff;">外婆家的性价比和味道,吃过的都知道没什么好说的。</span></strong>", !!!!!!!(此处为蓝色) "review_rating": 5, "rating_img_url": "http://i3.dpfile.com/s/i/app/api/32_5star.png", "rating_s_img_url": "http://i2.dpfile.com/s/i/app/api/16_5star.png", "product_rating": 3, "decoration_rating": 4, "service_rating": 3, "review_url": "http://dpurl.cn/p/tn-RH4CDWq" }, { "review_id": 49302262, "user_nickname": "附庸风雅之人", "created_time": "2013-11-27 23:45", "text_excerpt": "非常不错的一家店 平时来基本不用怎么排队 奥义就是便宜。 现在这种物价", "review_rating": 5, "rating_img_url": "http://i3.dpfile.com/s/i/app/api/32_5star.png", "rating_s_img_url": "http://i1.dpfile.com/s/i/app/api/16_5star.png", "product_rating": 4, "decoration_rating": 4, "service_rating": 4, "review_url": "http://dpurl.cn/p/8SyN1cZJKf" }, { "review_id": 49301850, "user_nickname": "joyboa", "created_time": "2013-11-27 23:34", "text_excerpt": "酒酿圆子不是很甜〜还行〜中午生意真是好啊〜人一多,略感有点吵…", "review_rating": 5, "rating_img_url": "http://i1.dpfile.com/s/i/app/api/32_5star.png", "rating_s_img_url": "http://i1.dpfile.com/s/i/app/api/16_5star.png", "product_rating": 4, "decoration_rating": 4, "service_rating": 4, "review_url": "http://dpurl.cn/p/9s7WHMznvm" } ], "additional_info": { "more_reviews_url": "<span style="color:#ff0000;">http://dpurl.cn/p/84VMxE5Ots</span>" !!!!!!!!(此处为红色) }}</span>
$data = json_decode(curl_exec($curl), true);
访问上方红色数据,则使用 $dazhongData['additional_info']['more_reviews_url'], 分别访问名称为additional_info对应的值,再进一步访问其中名为more_reviews_url对应的值,这样就取到了这个url地址。
同样的,要想访问蓝色标记的数据(评论内容),可以这样访问,原理相同。$data['reviews'][0]['text_excerpt']。
以上是对于使用json的一些学习过程,总的来说json作为纯文本的数据传输格式,可以直接读代码就可以理解内容,这样确实很方便。还有很多学习内容,以后慢慢补充上,欢迎各位指正其中错误。
推荐资料:
阮一峰的日志 http://www.ruanyifeng.com/blog/2009/05/data_types_and_json.html
- JSON 学习笔记 使用php
- Json学习笔记之Json的使用
- Json学习笔记(二)-Gson使用
- JSON PHP学习
- PHP JSON使用
- PHP使用JSON
- php使用json
- PHP使用json举例
- php中的json使用
- php中使用json
- php json的使用
- PHP使用JSON
- php json 函数使用
- Json(Json.Net)学习笔记
- PHP学习笔记--ZendStudio的使用
- PHP学习笔记之array_intersect_key() 函数使用
- php 学习笔记 使用数组(三)
- 【笔记】PHP- array_push() 还有JSON
- ActionBar使用
- 电路交换和分组交换的时延比较
- DIV水平居中、垂直居中
- cocos2d-x 游戏暂停界面,监听home键,返回键,Menu键 解决方案
- EditPlus强大替换功能
- JSON 学习笔记 使用php
- 懒汉式单例和饿汉式单例优缺点
- html5摇一摇代码优化
- 原子操作atomic_t
- 数独
- Oracle宝典--常用SQL
- [pcDuino][刷机]
- UML类图几种关系的总结
- LeetCode:Merge Two Sorted Lists