巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
赞助文档Help

在PHP说话中利用JSON和将json复原成数组的体例

一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-27 10:44:09 阅读数: 135

在之前我写过php前往json数据简略实例,方才上彀,俄然发明一篇文章,也是先容json的,还挺详细,值得参考。内容以下

从5.2版本起头,PHP原生供给json_encode()和json_decode()函数,前者用于编码,后者用于解码。

一、json_encode()

<?php 
$arr = array ("a"=>1,"b"=>2,"c"=>3,"d"=>4,"e"=>5); 
echo json_encode($arr); 
?> 

输入

{"a":1,"b":2,"c":3,"d":4,"e":5} 

再看一个工具转换的例子:

$obj->body      = "another post"; 
$obj->id       = 21; 
$obj->approved    = true; 
$obj->favorite_count = 1; 
$obj->status     = NULL; 
echo json_encode($obj); 

输入

{ 
    "body":"another post", 
   
    "id":21, 
   
    "approved":true, 
   
    "favorite_count":1, 
   
    "status":null 
  } 

因为json只接管utf-8编码的字符,以是json_encode()的参数必须是utf-8编码,不然会取得空字符或null。傍边文利用GB2312编码,或外文利用ISO-8859-1编码的时辰,这一点要出格注重。

二、索引数组和接洽关系数组

PHP撑持两种数组,一种是只保管"值"(value)的索引数组(indexed array),别的一种是保管"名值对"(name/value)的接洽关系数组(associative array)。

因为javascript不撑持接洽关系数组,以是json_encode()只将索引数组(indexed array)转为数组格局,而将接洽关系数组(associative array)转为工具格局。

比方,此刻有一个索引数组

$arr = Array("one", "two", "three"); 
   
  echo json_encode($arr); 

 输入

["one","two","three"] 

若是将它改成接洽关系数组:

$arr = Array("1"=>"one", "2"=>"two", "3"=>"three"); 
    
  echo json_encode($arr);

输入变为

{"1":"one","2":"two","3":"three"} 

注重,数据格局从"[]"(数组)变成了"{}"(工具)。

若是你须要将"索引数组"强迫转化成"工具",能够如许写

json_encode( (object)$arr ); 

json_encode ( $arr, JSON_FORCE_OBJECT ); 

三、类(class)的转换

上面是一个PHP的类:

class Foo { 
   
    const   ERROR_CODE = "404"; 
   
    public  $public_ex = "this is public"; 
   
    private  $private_ex = "this is private!"; 
   
    protected $protected_ex = "this should be protected"; 
    
    public function getErrorCode() { 
   
      return self::ERROR_CODE; 
   
    } 
   
  } 

此刻,对这个类的实例停止json转换:

$foo = new Foo; 
   
  $foo_json = json_encode($foo); 
   
  echo $foo_json; 

输入成果是

{"public_ex":"this is public"} 

能够看到,除公然变量(public),其余工具(常量、公有变量、体例等等)都丢失了。

四、json_decode()

该函数用于将json文本转换为响应的PHP数据布局。上面是一个例子:

 $json = "{"foo": 12345}"; 
    
  $obj = json_decode($json); 
   
  print $obj->{"foo"}; // 12345 

凡是环境下,json_decode()老是前往一个PHP工具,而不是数组。比方:

$json = "{"a":1,"b":2,"c":3,"d":4,"e":5}"; 
    
  var_dump(json_decode($json)); 

成果便是天生一个PHP工具:

object(stdClass)#1 (5) { 
   
    ["a"] => int(1) 
    ["b"] => int(2) 
    ["c"] => int(3) 
    ["d"] => int(4) 
    ["e"] => int(5) 
   
  } 

若是想要强迫天生PHP接洽关系数组,json_decode()须要加一个参数true:

$json = "{"a":1,"b":2,"c":3,"d":4,"e":5}"; 
    
  var_dump(json_decode($json,true)); 

成果就天生了一个接洽关系数组:

array(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 = "{ bar: "baz" }"; 
   
  $bad_json = "{ "bar": "baz", }"; 

对这三个字符串履行json_decode()都将前往null,并且报错。

第一个的毛病是,json的分开符(delimiter)只许可利用双引号,不能利用单引号。第二个的毛病是,json名值对的"名"(冒号左侧的局部),任何环境下都必须利用双引号。第三个的毛病是,最初一个值以后不能增加逗号(trailing comma)。

别的,json只能用来表现工具(object)和数组(array),若是对一个字符串或数值利用json_decode(),将会前往null。

var_dump(json_decode("Hello World")); //null 

以上这篇在PHP说话中利用JSON和将json复原成数组的体例便是小编分享给大师的全数内容了,但愿能给大师一个参考,也但愿大师多多撑持网页设想。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。最近几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已成功的为天下上百家收集公司供给自助建站平台搭建办事。

相干消息more

11
05月
专业网站设想公司、专业网站扶植公司网站扶植的

古代企业轨制的成立,让一些家庭式企业慢慢走上正轨的办理轨制,也就成绩了企业走向光辉,慢慢走向成功,为社会、为企业承当应有的社会义务。专业网站... >>概况

08
04月
保藏起来!学室内设想你应当晓得的6个网站!

学室内设想你应当晓得的6个网站!HouzzHouzz 是天下顶尖的室内设想网站,在这儿你能够找到几近一切室内的设想灵感,从罕见的浴室、客堂、... >>概况

06
05月
网站设想若何利用背景纹理的技能?

在网站设想中利用纹理的体例有良多,若是你但愿接纳更合适古代的体例,并遵守一些简略的法则,你将取得更多有关背景的常识。这里有几种技能能够赞助你... >>概况

20
04月
canvas进阶之贝塞尔公式推导与物体跟从复

写在最前在之前的这篇文章中咱们提到了对贝塞尔公式的应用。本次分享一下若何推导贝塞尔公式和附一个简略的🌰即小球跟从曲线轨迹... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站