json_encode( )和json_decode( )

介绍【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" }'; //正确方式

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