这篇文章给大家介绍如何在php中对JSON进行转换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
<强>一、json_encode() 强>
& lt; php ? arr 美元;=,array (& # 39;一个# 39;=祝辞1 & # 39;b # 39;=祝辞;2,& # 39;c # 39;=祝辞;3,& # 39;d # 39;=在4日& # 39;e # 39;=祝辞;5); 美元echo json_encode (arr); ?在
输出
{“a": 1、“b": 2,“c": 3,“d": 4,“e": 5}
再看一个对象转换的例子:
obj→美元body ,,,,,,,,,,=, & # 39; another 文章# 39;; 美元obj→id ,,,,,,,,,,,,=, 21; 美元obj→approved ,,,,,,=,真的; 时间=美元obj→favorite_count 1; 美元obj→status ,,,,,,,,=,空; echo json_encode (obj美元);
,输出
{ “body":“another post" “id": 21日 “approved":没错, “favorite_count": 1、 “status":零 }
,由于json只接受utf - 8编码的字符,所以json_encode()的参数必须是utf - 8编码,否则会得到空字符或者null。当中文使用GB2312编码,或者外文使用iso - 8859 - 1编码的时候,这一点要特别注意。
<强>二、索引数组和关联数组强>
PHP支持两种数组,一种是只保存“值”(值)的索引数组(索引数组),另一种是保存“名值对”(名称/值)的关联数组(关联数组)。
由于javascript不支持关联数组,所以json_encode()只将索引数组(索引数组)转为数组格式,而将关联数组(关联数组)转为对象格式。
比如,现在有一个索引数组
arr 美元;=,数组(& # 39;一个# 39;,,& # 39;两个# 39;,,& # 39;3 # 39;); echo json_encode (arr)美元;
,输出
(“人,“two",“three"]
,如果将它改为关联数组:
arr 美元;=,数组(& # 39;1 & # 39;=祝辞& # 39;一个# 39;,,& # 39;2 & # 39;=祝辞& # 39;两个# 39;,,& # 39;3 & # 39;=祝辞& # 39;3 # 39;); echo json_encode (arr)美元;
,输出变为
{“1”:“人,“2”:“two",“3”:“three"}
,注意,数据格式从“[]”(数组)变成了“{}”(对象)。
如果你需要将“索引数组“强制转化成“对象“,可以这样写
json_encode(),(对象)arr 美元;
,或者
json_encode (arr美元,大敌;JSON_FORCE_OBJECT );
<强>,三,类(类)的转换强>
下面是一个PHP的类:
class Foo { const ,,,, ERROR_CODE =, & # 39; 404 & # 39;; public ,,, public_ex 美元;=,& # 39;却;能够is 公共# 39;; private ,, private_ex 美元;=,& # 39;却;能够is 私人! & # 39;; protected protected_ex 美元;=,& # 39;却;能够should be 保护# 39;; public function  getErrorCode (), { return 自我::ERROR_CODE; } }
,现在,对这个类的实例进行json转换:
foo 美元;=,new Foo; $ foo_json =, json_encode ($ foo); echo foo_json美元;
,输出结果是
{“public_ex":“却;能够is public"}
,可以看的到,除了公开变量(公共),其他东西(常量,私有变量,方法等等)都遗失了。
<强>四,json_decode() 强>
该函数用于将json文本转换为相应的PHP数据结构。下面是一个例子:
json 美元;=,& # 39;{12345}“foo": & # 39;; $ obj =, json_decode (json); print obj→美元{& # 39;foo # 39;},,//, 12345
,通常情况下,json_decode()总是返回一个PHP对象,而不是数组比。如:
代码如下:
$ json=& # 39; {“a": 1、“b": 2,“c": 3,“d": 4,“e": 5} & # 39;;
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()需要加一个参数:
代码如下:
$ json=& # 39; {“a": 1、“b": 2,“c": 3,“d": 4,“e": 5} & # 39;;
var_dump (json_decode (json美元,真的));