代码php中json_decode()和json_encode()的使用方法

json_encode  时间:2021-01-26  阅读:()

php中json_decode()和json_encode()的

使用方法

1.json_decode()json_decode

(PHP 5>=5.2.0,PECLjson>=1.2.0)json_decode—对JSON格式的字符串进行编码

说明mixed json_decode( string$json[,bool$assoc] )

接受一个JSON格式的字符串并且把它转换为PHP变量

参数json

待解码的json string格式的字符串。as soc

当该参数为TRUE时将返回array而非object 。

返回值

Returns an object or if the optional assoc parameter is TRUE, an associative array is insteadr eturne d.

范例

Example#1 json_decode()的例子

复制代码代码如下:

<?p hp

$json='{"a":1var_dump(json_dec ode($json));var_dump(js on_dec ode($js on, 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)

}

复制代码代码如下:

$data='[{"Name":"a1"23"":""}]' ;echo json_decode($data);

结果为

复制代码代码如下:

Array( [0]=>stdClas s Object ( [Name]=>a1 [Number]=>123 [Contno]=>000[QQNo]=>)

[1]=>stdClas s Object ( [Name]=>a1 [Number]=>123 [Contno]=>000[QQNo]=>) [2]=>stdClas s Object ( [Name]=>a1 [Number]=>123 [Contno]=>000[QQNo]=>) )

可以看出经过json_dec ode()编译出来的是对象,现在输出json_dec ode($data,true)试下复制代码代码如下:echo json_dec ode($data,true);

结果

复制代码代码如下:

Array( [0]=>Array( [Name]=>a 1 [Numb er]=>123 [Contno]=>000 [Q QNo]=>) [1]=>Array( [Name]=>a 1 [Numb er]=>123[Contno]=>000[Q QNo]=>) [2]=>Array( [Name]=>a 1 [Numb er]=>123 [Contno]=>000[Q QNo]=>) )

可以看出json_dec ode($data,true)输出的一个关联数组,由此可知json_dec ode($data输出的是对象,而js on_dec ode("$arr",true)是把它强制生成PHP关联数组.

2.json_enc ode()

json_enc ode

(PHP 5>=5.2.0,PECLjson>=1.2.0)js on_enc ode—对变量进行JSON编码

Report a bug说明string json_enc ode(mixed$value [, int$options=0] )

返回value值的J SON形式

Report a bug参数value

待编码的value 除了res ourc e类型之外可以为任何数据类型

该函数只能接受UTF-8编码的数据options

由以下常量组成的二进制掩码 JSON_HEX_QUOT, J SON_HEX_TAG, J SON_HEX_AMP,J S ON_HEX_AP O S, J S ON_NUME RI C_C HEC K, J S ON_PRET TY_PRINT,JSON_UNESCAP ED_SLAS HES, JSON_FORCE_OBJECT, JSON_UNESCAPED_UNICOD E.Report a bug返回值

编码成功则返回一个以JSON形式表示的string或者在失败时返回FALSE 。

Report a bug更新日志

版本说明

5.4.0 options参数增加常量 JSON_PRETTY_PRINT, JSON_UNESCAP ED_SLAS HES,和J SON_UNESCAP ED_UNICOD E。

5.3.3 options参数增加常量 J S ON_NUMERIC_C HECK。

5.3.0增加options参数.

Report a bug范例

Example#1 A json_encode()的例子

复制代码代码如下:

<?p hp

$arr=array('a'=>1);echo json_encode($arr);

?>

以上例程会输出

复制代码代码如下:

{"a":1}

Example#2 json_encode()函数中options参数的用法

复制代码代码如下:

<?p hp

$a=array('<fo o>'");echo"Normal: ", json_encode($a), "\n";echo"Tags: ", js on_enc ode($a,J SON_HEX_TAG), "\n";echo"Apos: ", json_enc ode($a, JSON_HEX_APOS), "\n";echo"Quot: ", json_encode($a,JSON_HEX_QUOT), "\n";echo"Amp: ", js on_enc ode($a,J SON_HEX_AMP), "\n";echo"Unic ode: ", json_enc ode($a, JSON_UNES CAPED_UNICO DE), "\n";echo "All: ", json_encode($a, JSON_HEX_TAG| JSON_HEX_APOS | JSON_HEX_QUOT |J S ON_HEX_AMP| J S ON_UNES C AP ED_UNICOD E), "\n\n";

$b=array();echo"Empty array output as array: ", json_enc ode($b), "\n";echo"Empty array output as object: ", json_enc ode($b,JSON_FORCE_OBJECT), "\n\n";$c=array(array(1,2,3));echo"Non-as sociative array output as array: ", json_encode($c), "\n";echo "Non-associative array output as object: ", json_encode($c, JSON_FORCE_OBJECT),"\n\n";

$d=array('foo'=>'bar', 'baz'=>'long');echo"Associative array always output as object: ", json_encode($d), "\n";echo "Associative array always output as object: ", json_encode($d, JSON_FORCE_OBJECT),"\n\n";

?>

以上例程会输出

复制代码代码如下:

Normal: ["<foo>","'bar'","\"b az\"","&b long&","\u00e9"]

Tags: ["\u003 Cfoo\u003E","'bar'","\"baz\"","&b long&","\u00 e9"]

Apos: ["<foo>","\u0027bar\u0027","\"baz\"","&b long&","\u00e9"]

Quot: ["<foo>","'bar'","\u0022baz\u0022","&b long&","\u00e9"]

Amp: ["<foo>","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"]

Unicode: ["<foo>","'bar'","\"baz\"","&blong&","é"]

All: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026b long\u0026","é"]Empty array output as array: []

Empty array output as object: {}

Non-as soc iative array output as array: [[1,2,3]]

Non-as sociative array output as object: {"0":{"0":1,"1":2,"2":3}}

Associative array always output as object: {"foo":"bar","baz":"long"}

Associative array always output as object: {"foo":"bar","baz":"long"}

Examp le#3连续与非连续数组示例

复制代码代码如下:

<?p hpecho"连续数组".PHP_EOL;

$s equential=array("foo", "bar", "baz", "b long");v ar_dump(

$s equential,js on_enc ode($s equential)

);echo PHP_EOL."非连续数组".PHP_EOL;

$nons equential=array(1=>"foo",2=>"bar", 3=>"baz",4=>"blong");v ar_dump(

$nons equwww.s hanxiw ang.netential,js on_enc ode($nons equential)

);echo PHP_EOL."删除一个连续数组值的方式产生的非连续数组".PHP_EOL;uns et($s equential[1]);v ar_dump(

$s equential,js on_enc ode($s equential)

);

?>

以上例程会输出

复制代码代码如下:

连续数组

array(4) {

[0]=>string(3) "foo"

[1]=>string(3) "bar"

[2]=>s tring(3) "b az"

[3]=>string(5) "blong"

}string(27) "["foo","bar","baz","b long"]"

非连续数组array(4) {

[1]=>string(3) "foo"

[2]=>string(3) "bar"

[3]=>s tring(3) "b az"

[4]=>string(5) "blong"

}string(43) "{"1":"foo","2":"bar","3":"b az","4":"b long"}"删除一个连续数组值的方式产生的非连续数组array(3) {

[0]=>string(3) "foo"

[2]=>s tring(3) "b az"

[3]=>string(5) "blong"

}string(33) "{"0":"foo","2":"baz","3":"b long"} "

复制代码代码如下:

$obj->Name='a 1';$obj->Number='123' ;

$obj->C ontno='000' ;echo json_encode($obj);

结果为

复制代码代码如下:

{"Name":"a1"

"Numb er":"123"

"C ontno":"000"

}

可以看出json_enc ode()和json_dec ode()是编译和反编译过程注意json只接受utf-8编码的字符所以js on_enc ode()的参数必须是utf-8编码否则会得到空字符或者null。

Linode 18周年庆典活动 不断改进产品结构和体验

今天早上相比很多网友和一样收到来自Linode的庆祝18周年的邮件信息。和往年一样,他们会回顾在过去一年中的成绩,以及在未来准备改进的地方。虽然目前Linode商家没有提供以前JP1优化线路的机房,但是人家一直跟随自己的脚步在走,确实在云服务器市场上有自己的立足之地。我们看看过去一年中Linode的成就:第一、承诺投入 100,000 美元来帮助具有社会意识的非营利组织,促进有价值的革新。第二、发...

Hostiger发布哥伦布日提供VPS主机首月七折优惠 月费2.79美元

Hostiger商家我们可能以前也是有见过的,以前他们的域名是Hostigger,后来进行微调后包装成现在的。而且推出Columbus Day哥伦布日优惠活动,提供全场的VPS主机首月7折月付2.79美元起的优惠。这里我们普及一下基础知识,Columbus Day ,即为每年10月12日,是一些美洲国家的节日,纪念克里斯托弗·哥伦布在北美登陆,为美国的联邦假日。Hostiger 商家是一个成立于2...

免费注册宝塔面板账户赠送价值3188礼包适合购买抵扣折扣

对于一般的用户来说,我们使用宝塔面板免费版本功能还是足够的,如果我们有需要付费插件和专业版的功能,且需要的插件比较多,实际上且长期使用的话,还是购买付费专业版或者企业版本划算一些。昨天也有在文章中分享年中促销活动。如今我们是否会发现,我们在安装宝塔面板后是必须强制我们登录账户的,否则一直有弹出登录界面,我们还是注册一个账户比较好。反正免费注册宝塔账户还有代金券赠送。 新注册宝塔账户送代金券我们注册...

json_encode为你推荐
金士顿内存卡价格金士顿16G和32G内存卡 价格内存卡数据恢复软件怎样找回sd卡文件恢复软银收购wework校内网被软银收购后会泄露我国几千万大学生的资料给日本吗???腾讯空间首页手机QQ空间首页从哪里进入!杀毒软件哪个好最好的杀毒软件?宝来和朗逸哪个好朗逸和宝来买哪个好苹果手机助手哪个好iphone有什么比较好用的软件!播放器哪个好什么播放器好用雅思和托福哪个好考托福好考还是雅思好考哇?电动牙刷哪个好有人懂电动牙刷吗?飞利浦的好用还是欧乐B好用
二级域名 备案域名 域名论坛 enom liquidweb l5639 godaddy优惠码 512av seovip hnyd 卡巴斯基永久免费版 本网站服务器在美国 台湾谷歌地址 免空 宁波服务器 cdn加速原理 爱奇艺vip免费领取 如何注册阿里云邮箱 中国电信测速器 中国电信网络测速 更多