国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php中json_encode()和json_decode()的用法

2024-09-04 11:49:13
字體:
來源:轉載
供稿:網友

這兩個函數是對于數據進行json一個轉換了,一個是正轉一個是反轉了,下面我們來看看json_encode()和json_decode()的用法,有興趣的朋友可一起來看看.

從5.2版本開始,PHP原生提供json_encode()和json_decode()函數,前者用于編碼,后者用于解碼.

一、json_encode()

string json_encode(mixed $value [, int $options = 0 ]):該函數主要用來將數組和對象,轉換為json格式。$value為要轉換的數據,除了resource 類型之外,可以為任何數據類型.

該函數只能接受 UTF-8 編碼的數據,否則會得到空字符或者null.

$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}

對于對象的轉換:

  1. $test->site = 'ido321.com';
  2. $test->id = 22;
  3. $test->name = 'dwqs';
  4. echo json_encode($test); 
  5. //輸出是: 
  6. "site":"ido321.com",
  7. "id":22,
  8. "name":"dwqs"

二、編碼數組

PHP支持關聯和索引數組,但由于javascript不支持關聯數組,所以json_encode()只將索引數組(indexed array)轉為數組格式,而將關聯數組(associative array)轉為對象格式.

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

結果為:["one","two","three"]

而對于關聯數組:

  1. $arr = Array(1=>'one', 2=>'two', 3=>'three'); 
  2. echo json_encode($arr); 
  3. //結果為: 
  4. {"1":"one","2":"two","3":"three"

注意:數據格式從”[]”(數組)變成了”{}”(對象),如果你需要將”索引數組”強制轉化成”對象”,可以這樣寫.

  1. $arr = Array('one''two''three'); 
  2. echo json_encode((object)$arr); 
  3. //結果是 
  4. {"0":"one","1":"two","2":"three"

還有一種方式:

  1. echo json_encode($arr,JSON_FORCE_OBJECT); 
  2. //輸出:{"0":"one","1":"two","2":"three"} 

三、對類的轉換

  1. class Test 
  2.     { 
  3.     const TEST="test"
  4.     public $name="dwqs"
  5.     private $age=21; 
  6.     protected $sex="male"
  7.      
  8.     public function getTest() 
  9.         { 
  10.         return self::TEST; 
  11.     } 
  12. $obj=new Test; 
  13. echo json_encode($obj); 
  14. //輸出結果 
  15. {"name":"dwqs"

除了公開變量(public),其他東西(常量、私有變量、方法等等)都遺失了.

四、json_decode()

該函數主要是對 JSON 格式的字符串進行編碼,mixed json_decode(string $json [, bool $assoc ]),接受一個 JSON 格式的字符串并且把它轉換為 PHP 變量.

  1. <?php  
  2. $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';  
  3. var_dump(json_decode($json));  
  4. var_dump(json_decode($json, true));  
  5. ?> 
  6. //對應的輸出是: 
  7. object(stdClass)#1 (5) {  
  8. ["a"] => int(1)  
  9. ["b"] => int(2)  
  10. ["c"] => int(3)  
  11. ["d"] => int(4)  
  12. ["e"] => int(5)  
  13. array(5) {  
  14. ["a"] => int(1)  
  15. ["b"] => int(2)  
  16. ["c"] => int(3)  
  17. ["d"] => int(4)  
  18. ["e"] => int(5)  

通常情況下,json_decode()總是返回一個PHP對象,而不是數組,如果想要強制生成PHP關聯數組,json_decode()需要加一個參數true,就能返回關聯數組.

對于json解碼,很容易出錯.

  1. $bad_json = "{ 'bar': 'baz' }";
  2. $bad_json = '{ bar: "baz" }'
  3. //開源軟件:Vevb.com 
  4. $bad_json = '{ "bar": "baz", }'

對這三個字符串執行json_decode()都將返回null,并且報錯.

第一個的錯誤是,json的分隔符(delimiter)只允許使用雙引號,不能使用單引號,第二個的錯誤是,json名值對的”名”(冒號左邊的部分),任何情況下都必須使用雙引號,第三個的錯誤是,最后一個值之后不能添加逗號(trailing comma).

另外,json只能用來表示對象(object)和數組(array),如果對一個字符串或數值使用json_decode(),將會返回null.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江门市| 苗栗县| 麻江县| 自治县| 温泉县| 改则县| 行唐县| 贵港市| 景谷| 安阳县| 灌阳县| 石门县| 洪江市| 镇雄县| 惠水县| 博爱县| 永定县| 仁寿县| 滕州市| 马公市| 开封县| 陆河县| 阿瓦提县| 简阳市| 泊头市| 九龙坡区| 东丰县| 来凤县| 新野县| 永定县| 鸡西市| 彭泽县| 庐江县| 蒙山县| 罗源县| 兴义市| 鄂尔多斯市| 肥东县| 新源县| 化隆| 汾阳市|