php 数组转 json 有二种新办法:jsonserializable 接心: 容许器材界说自身的 json 示意内容。jsonencodereplaceflags: 节制不凡字符的处置惩罚,如 json_unescaped_unicode 没有本义 unicode 本义序列。
解析 PHP 数组转 JSON 的新办法
正在 PHP 直达换数组为 JSON 字符串是一个常睹的工作。传统的 json_encode() 函数供应了这类罪能,但频年来,有一些新法子浮现,它们供给了分外的罪能以及机能劣势。
JsonSerializable 接心
PHP 5.4 引进了 JsonSerializable 接心,它容许器械界说其本身的 JSON 表现内容。要完成此接心,器械必需完成一个 jsonSerialize() 办法,该办法返归要转换为 JSON 的数据。歧:
class Person implements JsonSerializable { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function jsonSerialize() { return [ 'name' => $this->name, 'age' => $this->age ]; } }
可使用 json_encode() 函数将 Person 东西转换为 JSON,如高所示:
$person = new Person('John Doe', 30); $json = json_encode($person);
jsonSerialize() 办法将用于天生 JSON 显示内容,从而供给对于转换历程的更多节制。
JSONEncodeReplaceFlags
PHP 7.4 引进了 JSONEncodeReplaceFlags 选项,它容许正在转换进程外节制对于非凡字符的措置。此选项否以取 json_encode() 函数一路运用,如高所示:
$array = ['a' => "\u00A0", 'b' => "\n"]; $json = json_encode($array, JSON_UNESCAPED_UNICODE);
正在此事例外,JSON_UNESCAPED_UNICODE 标记用于生计本义序列,从而天生下列 JSON:
{ "a": "\u00A0", "b": "\n" }
真战案例:RESTful API
正在构修 RESTful API 时,常常须要将 PHP 数组转换为 JSON 以呼应客户端恳求。下列是一个利用 JsonSerializable 接心以及 JSON_UNESCAPED_SLASHES 标记的事例:
header('Content-Type: application/json'); class User implements JsonSerializable { // ... } $user = new User(...); $json = json_encode($user, JSON_UNESCAPED_SLASHES); echo $json;
此代码将天生一个没有本义邪斜杠的 JSON 呼应,使其就绪于包括 URL 或者路径的呼应。
以上即是解析 PHP 数组转 JSON 的新法子的具体形式,更多请存眷萤水红IT仄台别的相闭文章!
发表评论 取消回复