如何正确使用PHP中的JSON

从5.2版,php原生提供json_encode()和()函数,json_decode进行编码和解码后。

1、json_encode()
这个函数用于将数组和对象转换成JSON格式。
$ ARR =阵列(A =>1,B =>2,C = > 3,会= > 4,e = > 5);
json_encode回波($ ARR);

上述代码的输出是:
{A:1,B:2,C:3,d:4,E:5 }

看一个对象转换的例子。
复制代码代码如下所示:
$ obj ->身体=还有一只后;
obj -> ID = 21美元;
$ obj ->批准=真;
obj -> favorite_count = 1美元;
$ obj ->状态= null;
回声json_encode($ obj);

上述代码的输出是:
复制代码代码如下所示:
{
身体:另一个职位

id:21,

批准:正确,

favorite_count :1,

状态:null
}

由于JSON只接受字符编码UTF-8,json_encode()的参数必须是UTF-8编码,否则空字符或空将得到的。这一点需要注意的是当使用GB2312中文,或当外语使用ISO-8859-1编码。

2、索引数组和关联数组
PHP支持两种数组,一种是只存储索引数组(索引数组)的值(value),另一种是保存关联的数组(关联数组)的name值对(name value)。

因为Javascript不支持关联数组,json_encode()将索引数组(数组索引数组)格式,并将相关的数组(数组)为对象的格式。

例如,现在有一个索引数组:
$ ARR =阵列(一,两,三);
json_encode回波($ ARR);

输出结果如下:
{一

如果将其更改为关联数组,
(1美元=数组arr =>1,2= >,3>=);
json_encode回波($ ARR);

结果变了。
{1 :

请注意,从{(数组)到{}(对象)的数据格式。

如果需要将索引数组强制放入对象

json_encode(((对象)$ ARR);
或:
json_encode($ ARR,json_force_object);

3,类(类)的转换
下面是PHP的一类:
复制代码代码如下所示:
类Foo {

const error_code = '404;

公共public_ex美元=这是公共的;

这是私人的私人private_ex美元=!

保护protected_ex美元=这应该被保护的;

公共功能geterrorcode(){

回归自我::error_code;

}

}

现在,这个类的实例是JSON转换的:
复制代码代码如下所示:
新富;
foo_json = json_encode美元($ Foo);
echo $ foo_json;

输出结果如下:
{public_ex :这是公共}

如您所见,除了公共变量(public)之外,其他参数(常量、私有变量、方法等)也会丢失。

4、json_decode()
此函数用于将JSON文本转换为相应的PHP数据结构:
复制代码代码如下所示:
12345}{ { };
obj = json_decode美元($ JSON);
打印$ obj -> { 'foo / / 12345};

通常,json_decode()总是返回一个PHP对象,而不是一个数组。例如:
12、C、3、D、4、5;
var_dump(json_decode($ JSON));

其结果是生成一个PHP对象:
复制代码代码如下所示:
(# stdClass对象)1(5){
{A} = int(1)
{b} = int(2)
{C} = int(3)
{d} = int(4)
{e} = int(5)

}

如果你想强迫一个PHP数组,json_decode()需要添加一个参数真实:
12、C、3、D、4、5;
var_dump(json_decode($ JSON),真的);

结果,生成了一个关联数组:
复制代码代码如下所示:
数组(5){
{A} = int(1)
{b} = int(2)
{C} = int(3)
{d} = int(4)
{e} = int(5)
}

5个常见的错误,json_decode()
下面的三种JSON书写都是错误的,你能看到错误在哪里吗
复制代码代码如下所示:
bad_json美元={ 'bar:'baz};
bad_json美元=巴兹}的{酒吧;
bad_json美元{ =棒:巴兹

执行json_decode()()这三个字符串,将返回null,犯了一个错误。

第一个错误是,JSON分离器(分隔符)只允许使用双引号和单引号不能使用。第二误差是名字的名字对JSON(在左半结肠结肠的一部分)在任何情况下必须使用双引号。第三错误这是最后的值不能加逗号(尾逗号)。

此外,JSON只能用来表示对象(对象)和数组(数组),如果json_decode()用于字符串或价值,它将返回null。
var_dump(json_decode(Hello World)); / /空