PHP가 json_decode를 지원하지 않는 문제에 대한 해결책: 먼저 JsonSerialized 추상 클래스의 인터페이스 메서드 jsonSerialize를 구현한 다음 JSON으로 직렬화해야 하는 데이터를 지정합니다.
이 글의 운영 환경: windows7 시스템, PHP7.1 버전, DELL G3 컴퓨터
php가 json_decode를 지원하지 않으면 어떻게 해야 하나요? php json_encode는 객체 전용 속성을 지원하지 않습니다. 이 기사에서는 객체 전용 속성을 지원하지 않는 php json_encode에 대한 솔루션을 소개합니다. json_encode는 객체를 json 형식으로 변환할 수 있으며 json_decode를 사용하여 객체를 복원할 수 있습니다.
그러나 객체에 비공개 속성이 포함되어 있으면 json_encode를 실행한 후 비공개 속성이 손실됩니다.
예: json_encode는 객체 개인 속성을 잃습니다.
<?php // 用户类 class user{ public $id = 1; public $name = 'fdipzone'; public $profession = 'programmer'; private $age = 18; } // 对象 $oUser = new User; // json_encode $json = json_encode($oUser); echo $json; // json_decode $oUser = json_decode($json); var_dump($oUser); ?>
출력:
{"id":1,"name":"fdipzone","profession":"programmer"} object(stdClass)[2] public 'id' => int 1 public 'name' => string 'fdipzone' (length=8) public 'profession' => string 'programmer' (length=10)
json_encode를 실행한 후 개인 속성 age가 손실됩니다.
json_encode 이후 개체의 개인 속성 손실에 대한 솔루션JsonSerialize 추상 클래스의 인터페이스 메서드 jsonSerialize를 구현하도록 클래스를 수정하여 JSON으로 직렬화해야 하는 데이터를 지정할 수 있습니다.
JsonSerialized::jsonSerialize 메소드는 공식 홈페이지를 참고해주세요: http://php.net/manual/zh/jsonserialized.jsonserialize.php
수정된 코드는 다음과 같습니다:
<?php // 用户类 class user implements JsonSerializable{ public $id = 1; public $name = 'fdipzone'; public $profession = 'programmer'; private $age = 18; // 实现的抽象类方法,指定需要被序列化JSON的数据 public function jsonSerialize() { $data = []; foreach ($this as $key=>$val){ if ($val !== null) $data[$key] = $val; } return $data; } } // 对象 $oUser = new User; // json_encode $json = json_encode($oUser); echo $json; // json_decode $oUser = json_decode($json); var_dump($oUser); ?>
출력:
{"id":1,"name":"fdipzone","profession":"programmer","age":18} object(stdClass)[2] public 'id' => int 1 public 'name' => string 'fdipzone' (length=8) public 'profession' => string 'programmer' (length=10) public 'age' => int 18
직렬화해야 한다고 지정한 후 JSON 데이터로 변환된 후 json_encode는 개인 속성 age를 읽을 수 있습니다.
추천 학습: "
PHP 비디오 튜토리얼위 내용은 PHP가 json_decode를 지원하지 않으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!