首頁  >  文章  >  後端開發  >  PHP中JSON的編碼與解碼(實例詳解)

PHP中JSON的編碼與解碼(實例詳解)

WBOY
WBOY原創
2021-11-04 10:46:565233瀏覽

在先前的文章《五分鐘教你PHP中數組與字串怎樣相互轉換》中我們詳細的介紹了在PHP中數組與字串之間相互轉換的相關知識,本篇文章我們來看看PHP中JSON的相關知識,希望對大家有幫助!

PHP中JSON的編碼與解碼(實例詳解)

在先前的文章中我們了解了PHP中需要怎樣才能完成陣列與字串之間的相互轉換,其中需要透過explode()函數和implode()函數來實現,接下來我們需要了解JSON的一些知識,看看PHP怎麼對變數進行JSON編碼。

想要進行PHP對變數進行JSON 的編碼首先我們需要了解一下什麼是JSON,下面我們一起來看看吧。

JSON是什麼

JSON 主要用於傳送數據,它是一種輕量級的數據交換的格式,它能夠完全的不同於PHP的程式語言來進行儲存和表示資料。

它比較容易閱讀和編寫,同時JSON對於機器的解析和生成也是比較簡單,透過JSON能夠十分有效的提高資料之間傳送的效率。

我們在PHP中已經有內建的JSON拓展,接下來我們就來看看PHP中的JSON函數,應該如何使用PHP語言來編碼JSON物件。

<strong><span style="font-size: 20px;">json_encode()</span></strong>JSON編碼

##在PHP中的

json_encode()是用來對變數進行JSON編碼的,該函數的基本語法格式如下:

string json_encode ( $value [, $options = 0 ] )

其中需要注意的是:執行

json_encode( )函數成功的話,回傳的結果就是JSON的數據,如果運行錯誤,回傳的結果是false;

參數

$value表示的就是需要進行編碼的值,其中json_encode()比較特殊的是,只有UTF-8 編碼的資料對此函數有效,參數options表示的是由常數組成的二進位的遮罩,這些常數有:JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK,#JSON_PRETTY_PRINT, ##JJSON_ASH_JV , JSON_FORCE_OBJECT接下來我們透過範例來看PHP中json_encode()函數的使用,也就是將PHP的陣列元素轉換為JSON格式的數據,範例如下:

<?php
   $arr = array(&#39;a&#39; => 1, &#39;b&#39; => 2, &#39;c&#39; => 3, &#39;d&#39; => 4, &#39;e&#39; => 5);
   echo json_encode($arr);
   $arr1 = array(&#39;一&#39; => 1, &#39;二&#39; => 2, &#39;三&#39; => 3, &#39;四&#39; => 4, &#39;五&#39; => 5);
   echo json_encode($arr1);
?>

輸出結果:


由上述範例我們能夠看到,透過json_encode()能夠將PHP的陣列元素轉換為JSON合適的數據,而且只有UTF-8 編碼的數據對此函數有效。 PHP中JSON的編碼與解碼(實例詳解)

上述範例轉換的是PHP中的一維數組,接下來我們來看看多維數組轉換的結果是什麼樣的,範例如下:

<?php
$arr_2 = array();
// 三维数组
$arr_2[&#39;member&#39;][&#39;lisi&#39;][&#39;job&#39;] = "worker";
$arr_2[&#39;member&#39;][&#39;lisi&#39;][&#39;age&#39;] = 30;
$arr_2[&#39;member&#39;][&#39;wangwu&#39;][&#39;job&#39;] = "student";
$arr_2[&#39;member&#39;][&#39;wangwu&#39;][&#39;age&#39;] = 10;
 
echo json_encode($arr_2);
//{"member":{"lisi":{"job":"worker","age":30},"wangwu":{"job":"student","age":10}}}
  ?>

輸出結果:


上述範例是透過函數將PHP中的陣列元素轉換,接下來我們看一下將PHP物件轉換為JSON格式的數據,範例如下:PHP中JSON的編碼與解碼(實例詳解)

<?php
class Person{
    public $name = "public name";
    protected $ptName = "protected name";
    private $pName = "private name";
 
    public function sayName(){
        return $this->name;
    }
}
$person1 = new Person();
echo json_encode($person1);//{"name":"public name"}
  ?>

輸出結果:


再來看一個範例:PHP中JSON的編碼與解碼(實例詳解)

<?php
   class Emp {
       public $name = "";
       public $hobbies  = "";
       public $birthdate = "";
   }
   $e = new Emp();
   $e->name = "sachin";
   $e->hobbies  = "sports";
   $e->birthdate = date(&#39;m/d/Y h:i:s a&#39;, "8/5/1974 12:20:03 p");
   $e->birthdate = date(&#39;m/d/Y h:i:s a&#39;, strtotime("8/5/1974 12:20:03"));
 
   echo json_encode($e);
?>

輸出結果:


##由此我們便透過json_encode()函數完成了PHP中物件轉換為JSON格式。

PHP中JSON的編碼與解碼(實例詳解)


json_decode()

<strong><span style="font-size: 20px;"></span>#JSON解碼</strong> PHP中能夠透過json_decode()函數來將JSON格式的字元換轉換成PHP的變數格式,也就是解碼。下面我們來看看json_decode()函數的基本語法格式,範例如下:

mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])

其中需要注意的是:參數json_string表示需要進行轉換也就是解碼的JSON格式的字串,就像

json_encode

()函數一樣,這個解碼的資料也必須是UTF-8的編碼資料;參數assoc表示當參數是true的時候,回傳的結果是個數組,當參數是false是傳回的結果是物件;參數depth表示的是整數類型的參數,參數options表示的是二進位的掩碼,與

json_encode

#()不同的是函數目前沒有支援這麼多,目前只支援 JSON_BIGINT_AS_STRING接下來我們透過範例來看PHP怎麼解碼,範例如下:<pre class="brush:php;toolbar:false">&lt;?php $json = &amp;#39;{&quot;a&quot;:1,&quot;b&quot;:2,&quot;c&quot;:3,&quot;d&quot;:4,&quot;e&quot;:5}&amp;#39;; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?&gt;</pre>輸出結果:

PHP中JSON的編碼與解碼(實例詳解)

通过上述示例我们看到了通过json_decode()对JSON进行解码,上述是解码成数组,下面我们看一下解码成对象,示例如下:

<?php
$jsonStr = &#39;{"key1":"value1","key2":"value2"}&#39;;
print_r(json_decode($jsonStr,false));//stdClass Object ( [key1] => value1 [key2] => value2
?>

输出结果:

PHP中JSON的編碼與解碼(實例詳解)

由此我们便通过json_encode()函数与json_decode()函数完成了PHP数据与JSON的编码与解码。

大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。

以上是PHP中JSON的編碼與解碼(實例詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn