最新消息:

PHP类第5款:JSON.php编码解码JSON,它只接受utf8格式

PHP模块 杨红伟 1219浏览 0评论

一、类介绍

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”}}

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址