现在的位置: 首页 > 综合 > 正文

php处理json数据(php学习)

2013年12月03日 ⁄ 综合 ⁄ 共 983字 ⁄ 字号 评论关闭

php后端使用(json_decode和json_encode)

(1)json_decode

作用在于将字符串格式的json数据解析成php的object,然后print_r可以打印出来。

<?php

    $m="{
        'a':11,
        'b':22
    }";
    $n=json_decode($m);
    print_r($n);

?>

但如果要访问解析后的json数据,处理形式还是跟js不太一样的:

<?php
    $json = '{"foo-bar": 12345}';
    $obj = json_decode($json);
    print $obj->{'foo-bar'}; // 12345 
?>

js直接$obj["foo-bar"]就可以。

但是一定要注意,这里所说的json数据,格式非常严格,key必须带双引号(单引号都不行),否则这些方法无效。在js里可能key不需要带引号都ok,但那并不是真正意义上的json,那只是js里的对象的写法而已,所以面对其它语言,json就只能严格按照自己的规范走,key必须带双引号。所以:

<?php
    $json='{ name:"xx","age":30}';
    $re=json_decode($json);     //这里json_decode方法就会失去效用,转换不了json。
    echo $re->{"age"};
?>

<?php
    $json="{ 'name':"xx",'age':30}";
    $re=json_decode($json);     //因为单引号,同样失效。
    echo $re->{"age"};
?>

注:一般前端JSON_stringfy处理json数据让其变成字符串后再丢给后端处理,后端则用json_decode来解析。

(2)json_encode

将php的数组转换成string类型的json数据。

<?php
    $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
    echo gettype(json_encode($arr));   //string
?>

转成json后,'a'就变成了"a",还是一样,json必须严格的带双引号。

注:后端json_encode将数组变成string类型的json数据后,再丢给前端,前端再JSON_parse成object然后使用。


【上篇】
【下篇】

抱歉!评论已关闭.