PHP가 json_decode를 지원하지 않으면 어떻게 해야 합니까?

藏色散人
풀어 주다: 2023-03-10 15:28:01
원래의
1439명이 탐색했습니다.

PHP가 json_decode를 지원하지 않는 문제에 대한 해결책: 먼저 JsonSerialized 추상 클래스의 인터페이스 메서드 jsonSerialize를 구현한 다음 JSON으로 직렬화해야 하는 데이터를 지정합니다.

PHP가 json_decode를 지원하지 않으면 어떻게 해야 합니까?

이 글의 운영 환경: 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 = &#39;fdipzone&#39;;
    public $profession = &#39;programmer&#39;;
    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 &#39;id&#39; => int 1
  public &#39;name&#39; => string &#39;fdipzone&#39; (length=8)
  public &#39;profession&#39; => string &#39;programmer&#39; (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 = &#39;fdipzone&#39;;
    public $profession = &#39;programmer&#39;;
    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 &#39;id&#39; => int 1
  public &#39;name&#39; => string &#39;fdipzone&#39; (length=8)
  public &#39;profession&#39; => string &#39;programmer&#39; (length=10)
  public &#39;age&#39; => int 18
로그인 후 복사

직렬화해야 한다고 지정한 후 JSON 데이터로 변환된 후 json_encode는 개인 속성 age를 읽을 수 있습니다.

추천 학습: "

PHP 비디오 튜토리얼

"

위 내용은 PHP가 json_decode를 지원하지 않으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿