一、类介绍
JSON是一种轻量级的数据交换格式。它基于JavaScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。
PHP本身带有json格式编码解码,为什么还要用JSON.php这一个类呢?
本人水平很有限,网上搜罗了一些内容,大致意思是:用于有些特殊的字符,用php的内置json_decode()解决不了。目前我也不知道哪些是属于特殊字符,碰到了再加吧。
如果有用到json的话,最好用utf8格式的编码,就不要用gbk格式的了。虽然通过转码也可以解决一些问题,但是太烦琐!使用它时这一点一定要注意!
二、类的使用方法
1、encode将数组编码 http://www.ijquery.cn/phpclass/json/encode.php
$arr = array( 'name' => '杨红伟', 'nick' => '子弹兄', 'contact' => array( 'email' => '403236160@qq.com', 'website' => 'http://www.360sites.cn', ) ); $result = $json->encode($arr); echo $result;
返回的结果如下:
{"name":"\u6768\u7ea2\u4f1f","nick":"\u5b50\u5f39\u5144","contact":{"email":"403236160@qq.com","website":"http:\/\/www.360sites.cn"}}
2、decode 将json数据解码 http://www.ijquery.cn/phpclass/json/decode.php
$json = new Services_JSON(); $str = '{"name":"\u6768\u7ea2\u4f1f","nick":"\u5b50\u5f39\u5144","contact":{"email":"403236160@qq.com","website":"http:\/\/www.360sites.cn"}}'; $result = $json->decode($str); print_r($result);
返回的结果是“数据结构”,如下:
stdClass Object ( [name] => 杨红伟 [nick] => 子弹兄 [contact] => stdClass Object ( [email] => 403236160@qq.com [website] => http://www.360sites.cn ) )
3、需要说的是,php的函数 json_decode 用法 ,可以返回数据结构,可以返回数组,看看下边的介绍
a、json_deocode 该函数用于将json文本转换为相应的PHP数据结构。
网址如下: http://www.ijquery.cn/phpclass/json/php-decode.php
$str = '{"name":"\u6768\u7ea2\u4f1f","nick":"\u5b50\u5f39\u5144","contact":{"email":"403236160@qq.com","website":"http:\/\/www.360sites.cn"}}'; $result = json_decode($str); print_r($result);
返回的是数据结构,如下:
stdClass Object ( [name] => 杨红伟 [nick] => 子弹兄 [contact] => stdClass Object ( [email] => 403236160@qq.com [website] => http://www.360sites.cn ) )
b、json_deocode 该函数用于将json文本转换为相应的PHP数据结构,和上边仅差一个true
网址如下: http://www.ijquery.cn/phpclass/json/php-decode2.php
$str = '{"name":"\u6768\u7ea2\u4f1f","nick":"\u5b50\u5f39\u5144","contact":{"email":"403236160@qq.com","website":"http:\/\/www.360sites.cn"}}'; $result = json_decode($str,true); print_r($result);
返回的是数组结构,如下:
Array ( [name] => 杨红伟 [nick] => 子弹兄 [contact] => Array ( [email] => 403236160@qq.com [website] => http://www.360sites.cn ) )
c、php自带的json_encode的用法和上边的encode的用法是一样的,如下:
$arr = array( 'name' => '杨红伟', 'nick' => '子弹兄', 'contact' => array( 'email' => '403236160@qq.com', 'website' => 'http://www.360sites.cn', ) ); $result = json_encode($arr); echo $result;
返回的结果是和类返回的结果是一样的,如下:
{"name":"\u6768\u7ea2\u4f1f","nick":"\u5b50\u5f39\u5144","contact":{"email":"403236160@qq.com","website":"http:\/\/www.360sites.cn"}}