PHP,json_encode函式對於ObjectId的轉換時,使其結果為一個字串
阿新 • • 發佈:2019-01-11
在一個PHP專案中使用了mongodb,然後自己對於模型層做了個簡單的封裝,期間遇到了json編碼模型物件的問題,因為mongoDB的_id,是ObjectId物件,所以在json編碼時,結果集會出現以下情況:
{"name":"Jon Jonsson","_id":{ "$oid" : "56213746bd21b9718b1d7371" } }
查找了一定資料,據說在之後的PHP擴充套件版本會修正。但對於之前版本,國外論壇中提出了一個解決方案:
class Person implements JsonSerializable { protected $_id; //ObjectId protected $name; function JsonSerialize() { $arr = array( "name" => $this->name, "id" => (string) $this->_id, ); return $arr; } }
為想要在json編碼中,將ObjectId轉換為字串的類,實現一個JsonSerializable 介面,然後自實現JsonSerialize方法即可。
改動之後的結果為:
{"name":"Jon Jonsson","_id":"56213746bd21b9718b1d7371" }