简析json_decode和json_encode

json_decode和json_encode

最近使用smarty框架时,用到了json_decode和json_encode两个东东。起初光看概念:

  • json_decode:对 JSON 格式的字符串进行编码;
  • json_encode:对变量进行 JSON 编码;

确实不好理解。
其实,认真参考手册文档就能明白。
其实是两个相反的过程。decode是将json格式的数据转成数组结构,使PHP能结构化地解析这个对象。而encode是将数据转化成json格式并以string的形式输出。

且以手册给的示例来说明一下它们的一些用途。

json_encode

示例代码如下所示:

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

输出结果为:

{"a":1,"b":2,"c":3,"d":4,"e":5}

注意这段代码哦,数组变量$arr可以用echo直接打印出结果而非Array,说明输出结果是一个json格式的string型结果数据。

其次,encode还提供了options参数,不同的参数会对不同的符号进行编码或转成object格式的string。

json_decode

传入的一个string类型的json字符串,通过json_decode可转化为一个PHP变量。
如:

<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>

输出为:

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

由上例可知,使用json_decode方法要将一个string型的json数据转成Array,第二个参数为true。json_decode若不设第二个参数,则json转成object格式的数据。

你可能感兴趣的:(简析json_decode和json_encode)