這篇文章主要介紹了關於對象轉換成JSON字串,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
定義一個Student類:
1 class Student {2 public $name;3 public $age;4 function __construct($name, $age) {5 $this->name = $name;6 $this->age = $age;7 }8 }
此時new一個對象並直接echo: 1 $person1 = new Student('jack', 20); 2 echo $person1;
結果並沒有按照我們預想的那樣列印出該對象而是報了一個致命錯誤:
意為Student類執行個體化出來的對象不能轉化成字串,此處可以得到一個資訊即:echo 後面必須是字串,
否則會將其自動轉化為字串,那麼如何講一個對象轉換為一個字串呢?
先介紹一個魔術方法:__tostring(),這個方法用於一個類被當成字串時應怎樣回應。例如 echo $obj;
應該顯示些什麼。此方法必須返回一個字串,否則將發出一條 E_RECOVERABLE_ERROR
層級的致命錯誤。
將這個魔術方法添加到Student類中:
1 class Student { 2 public $name; 3 public $age; 4 function __construct($name, $age) { 5 $this->name = $name; 6 $this->age = $age; 7 } 8 function __tostring() { 9 return json_encode($this, JSON_FORCE_OBJECT); 10 } 11 }
json_encode(value, options)方法可以將一個對象轉換為JSON字串,此方法接受兩個參數,
第一個參數:value
待編碼的 value ,除了resource 類型之外,可以為任何資料類型
該函數只能接受 UTF-8 編碼的資料
第二個參數: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, JSON_UNESCAPED_UNICODE.
傳回值:編碼成功則返回一個以 JSON 形式表示的 string 或者在失敗時返回 FALSE 。
note:與json_encode方法相對的有json_decode方法,此方法可以將一個JSON格式的字串轉化為PHP變數,此方法接受兩個參數
第一個參數:json字串
第二個參數:true/false,為true時表示將字串准換位元組,為false時則表示轉換為對象,預設為false
傳回值:對象或數組(第二個參數為為true時)
此時在瀏覽器開啟可以看到轉換成功:
以上就是本文的全部內容,希望對大家的學習有所協助,更多相關內容請關注topic.alibabacloud.com!