如何在php中对JSON进行转换

  介绍

这篇文章给大家介绍如何在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美元,真的));

如何在php中对JSON进行转换