PHP中JSON的使用和转换
从5.2版,php原生提供json_encode()和()函数,json_decode进行编码和解码后。
一、json_encode()
复制代码代码如下所示:
< PHP
$ 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编码。
索引数组和关联数组
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);
三,类(类)的转换
下面是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)之外,其他参数(常量、私有变量、方法等)也会丢失。
四、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)
}
五个常见的错误,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)); / /空
以上是这篇文章的全部内容,希望大家能喜欢,看完后可以有收入。