JSON 学习笔记 使用php

本文介绍了JSON数据格式的特点,并通过具体实例展示了如何使用PHP进行JSON数据的解析与操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在写一个微信的公众平台,在调用有道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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值