php抓取网页json数据(PHP应用JSON形式数组和访问普通的对象属性(图))

优采云 发布时间: 2021-12-15 17:09

  php抓取网页json数据(PHP应用JSON形式数组和访问普通的对象属性(图))

  PHP 一直受到程序开发人员的青睐,不仅因为它的高效,还因为它的灵活性和便利性。很多服务器返回的数据都是json格式的,而json数据的形式多种多样,这就要求我们的php程序能够处理不同形式的json数据。

  PHP应用JSON的相关函数为: json_encode($PHP_string);

  而使用PHP解析JSON的函数是: json_decode($json_string);

  在学习这个文章之前,我们需要知道什么是json数据。

  PHP 提供了特殊的函数来生成和解析 JSON 格式的数据。PHP解析出来的数据与原创Javascript数据含义相同,即Javascript对象解析为PHP对象,Javascript数组解析为PHP数组。我们使用php中的json_decode()函数来解析json数据。

  JSON的形式有很多种,不同的形式被PHP解释后会有不同的形式。

  

  JSON 格式一:

  它完全以对象的形式存在。这种形式的数据在 Javascript 中也称为关联数组。与一般数组的区别在于可以通过字符串作为索引来访问(使用“[]”或“.”表示级别)

  

$json='{

"item1":{

"item11":{

"n":"chenling",

"m":"llll"

},&

quot;sex":"男",

"age":"25"

},

"item2":{

"item21":"ling",

"sex":"女",

"age":"24"

}

}';  

$J=json_decode($json);  

print_r($J);  

  输出数据为:

  

stdClass Object

(

[item1] => stdClass Object

(

[item11] => stdClass Object

(

[n] => chenling

[m] => llll

)

[sex] => 男

[age] => 25

)

[item2] => stdClass Object

(

[item21] => ling

[sex] => 女

[age] => 24

)

)

  比如我想获取值为chenling的属性,应该这样访问: $J->item1->item11->n;

  这将获得属性 n 的值:chenling。

  其实这种访问方式类似于访问普通对象的属性,相当于访问一个3维数组。

  JSON形式二:混合对象和数组

  

$json='{"item1":[{"name":[{"chen":<br />

"chenling","ling":"chenli"}],"sex":<br />

"男","age":"25"},{"name":"sun","sex":<br />

"女","age":"24"}]}';

$J=json_decode($json);

print_r($J);

  输出数据为:

  

stdClass Object

(

[item1] => Array

(

[0] => stdClass Object

(

[name] => Array

(

[0] => stdClass Object

(

[chen] => chenling

[ling] => chenli

)

)

[sex] => 男

[age] => 25

)

[1] => stdClass Object

(

[name] => sun

[sex] => 女

[age] => 24

)

)

)

  比如我想获取值为chenling的元素,应该这样访问: $J-&gt;item1[0]-&gt;name[0]-&gt;chen;

  这将得到元素chen的值:chenling。

  其实这个PHP应用JSON格式结合了对象和数组的访问方式,相当于访问了一个5维数组。

  JSON形式三:完整数组形式

  

$json='[["item1","item11"],[

"n","chenling"],["m","llll"]]';

$J=json_decode($json);

print_r($J);

  输出数据为:

  

Array

(

[0] => Array

(

[0] => item1

[1] => item11

)

[1] => Array

(

[0] => n

[1] => chenling

)

[2] => Array

(

[0] => m

[1] => llll

)

)

  比如我想获取值为chenling的元素,就应该这样访问: $J[0][1];

  这将获得元素值为chenling的元素。

  但是,使用这种方法有一个缺点,就是不能使用字符串作为索引。您只能使用一个数字。这个问题可以用完整对象的形式来解决。其实这种访问方式就是数组的访问方式,相当于访问一个二维数组。.

  PHP解析不同形式的JSON数据汇总:

  从上面的 PHP 应用 JSON 例子可以看出,JSON 有点类似于 XML,而且结构化数据也可以在 PHP 和 Javascript 之间传递,使用起来非常方便。需要注意的是,每个属性和属性值都用引号“”括起来。

  免责声明:如需转载请注明出处并保留原文链接:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线