json_encode( )和json_decode( )
2018-08-08 本文已影响0人
崩鲨卡拉卡
介绍【JSON】数组:JSON 语法是 JavaScript 语法的子集。
JSON 数组在中括号中书写:
数组可包含多个对象:对象 "sites" 是包含三个对象的数组。每个对象代表一条关于某个网站(name、url)的记录。
{
"sites": [
{ "name":"菜鸟教程" , "url":"www.runoob.com" },
{ "name":"google" , "url":"www.google.com" },
{ "name":"微博" , "url":"www.weibo.com" }
]
}
可以像这样访问 JavaScript 对象数组中的第一项(索引从 0 开始):
读取:sites[0].name;
赋值:sites[0].name="菜鸟教程";
PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。
一、索引数组和关联数组:
【索引数组】:$arr = Array('one', 'two', 'three');
【关联数组】:$arr=('1'=>'one','2'=>'two','3'=>'three')
二、json_encode
索引数组:
$arr = Array('one', 'two', 'three');
echo json_encode($arr);
输出:["one","two","three"]
关联数组:
$arr=Array('1'=>'one','2'=>'two','3'=>'three');
echo $arr;
输出:{"1":"one","2":"two","3":"three"} //由数组变为对象
三、json_decode( )
该函数用于将json文本转换为相应的PHP数据结构。
一般,json_decode()总是返回一个PHP对象,而不是数组。比如:
$json='{"one":111,"two":2222,"three":333}';
var_dump(json_decode($json));
输出:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
如果想强制生成关联数组:json_decode($json,true)必须加一个参数【true】
四、注意:
下面三种json写法都是错的
$bad_json = "{ 'bar': 'baz' }"; //名和值都必须 使用 " "
$bad_json = '{ bar: "baz" }'; //名未使用 " "
$bad_json = '{ "bar": "baz" }'; //正确方式