溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解PHP中JSON的編碼與轉碼

發(fā)布時間:2021-11-04 11:17:06 來源:億速云 閱讀:396 作者:iii 欄目:編程語言

這篇文章主要介紹“怎么理解PHP中JSON的編碼與轉碼”,在日常操作中,相信很多人在怎么理解PHP中JSON的編碼與轉碼問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么理解PHP中JSON的編碼與轉碼”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

怎么理解PHP中JSON的編碼與轉碼

JSON是什么

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

它比較容易閱讀和編寫,同時JSON對于機器的解析和生成也是比較簡單,通過JSON能夠十分有效的提高數(shù)據(jù)之間傳送的效率。

我們在PHP中已經有內置的JSON拓展,接下來我們就來看一下PHP中的JSON函數(shù),應該如何使用PHP語言來編碼JSON對象。

json_encode()JSON編碼

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

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

其中需要注意的是:運行json_encode()函數(shù)成功的話,返回的結果就是JSON的數(shù)據(jù),如果運行錯誤,返回的結果是false;

參數(shù)$value表示的就是需要進行編碼的值,其中json_encode()比較特殊的是,只有UTF-8 編碼的數(shù)據(jù)對該函數(shù)有效,參數(shù)options表示的是由常量組成的二進制的掩碼,這些常量有:JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK,JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT。

接下來我們通過示例來看一下PHP中json_encode()函數(shù)的使用,也就是將PHP的數(shù)組元素轉換為JSON格式的數(shù)據(jù),示例如下:

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

輸出結果:

怎么理解PHP中JSON的編碼與轉碼

由上述示例我們能夠看到,通過json_encode()能夠將PHP的數(shù)組元素轉換為JSON合適的數(shù)據(jù),而且只有UTF-8 編碼的數(shù)據(jù)對該函數(shù)有效。

上述示例轉換的是PHP中的一維數(shù)組,接下來我們看一下多維數(shù)組轉換的結果是什么樣的,示例如下:

<?php
$arr_2 = array();
// 三維數(shù)組
$arr_2['member']['lisi']['job'] = "worker";
$arr_2['member']['lisi']['age'] = 30;
$arr_2['member']['wangwu']['job'] = "student";
$arr_2['member']['wangwu']['age'] = 10;
 
echo json_encode($arr_2);
//{"member":{"lisi":{"job":"worker","age":30},"wangwu":{"job":"student","age":10}}}
  ?>

輸出結果:

怎么理解PHP中JSON的編碼與轉碼

上述示例是通過函數(shù)將PHP中的數(shù)組元素進行轉換,接下來我們看一下將PHP對象轉換為JSON格式的數(shù)據(jù),示例如下:

<?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('m/d/Y h:i:s a', "8/5/1974 12:20:03 p");
   $e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03"));
 
   echo json_encode($e);
?>

輸出結果:

怎么理解PHP中JSON的編碼與轉碼

由此我們便通過json_encode()函數(shù)完成了PHP中對象轉換為JSON格式。

json_decode()JSON解碼

PHP中能夠通過json_decode()函數(shù)來對JSON格式的字符換進行轉換成PHP的變量格式,這也就是解碼。下面我們看一下json_decode()函數(shù)的基本語法格式,示例如下:

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

其中需要注意的是:參數(shù)json_string表示需要進行轉換也就是解碼的JSON格式的字符串,同json_encode()函數(shù)一樣,這個進行解碼的數(shù)據(jù)也必須是UTF-8的編碼數(shù)據(jù);參數(shù)assoc表示當參數(shù)是true的時候,返回的結果是個數(shù)組,當參數(shù)是false是返回的結果是對象;

參數(shù)depth表示的是整數(shù)類型的參數(shù),參數(shù)options表示的是二進制的掩碼,與json_encode()不同的是該函數(shù)目前沒有支持這么多,目前只支持 JSON_BIGINT_AS_STRING。

接下來我們通過示例來看一下PHP怎樣解碼,示例如下:

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

輸出結果:

怎么理解PHP中JSON的編碼與轉碼

通過上述示例我們看到了通過json_decode()對JSON進行解碼,上述是解碼成數(shù)組,下面我們看一下解碼成對象,示例如下:

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

輸出結果:

怎么理解PHP中JSON的編碼與轉碼

由此我們便通過json_encode()函數(shù)與json_decode()函數(shù)完成了PHP數(shù)據(jù)與JSON的編碼與解碼。

到此,關于“怎么理解PHP中JSON的編碼與轉碼”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI