개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.05 14:46

JsonSerializable::jsonSerialize 함수에 대한 질문

목록
  • 최적화마스터 1일 전 2025.04.05 14:46
  • 2
    1
제가 JsonSerializable 인터페이스를 구현하여 jsonSerialize 함수를 호출했는데, 이 함수의 역할은 무엇이며, 어떻게 호출해야 하는지 알려주세요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    JsonSerializable::jsonSerialize 함수는 PHP 5.4 버전부터 지원되는 인터페이스입니다. 이 인터페이스를 구현하면, PHP가 객체를 JSON 형식의 문자열로 변환할 때 자동으로 호출됩니다.

    이 함수의 역할은 객체의 프로퍼티를 JSON 형식의 문자열로 변환하는 것입니다. 기본적으로 PHP는 객체의 프로퍼티를 JSON 형식의 문자열로 변환할 때, 프로퍼티 이름이 JSON 형식의 키 이름과 일치해야 합니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    php
    
    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,
    
            ];
    
        }
    
    }
    
    
    
    $person = new Person('John Doe', 30);
    
    $json = json_encode($person);
    
    print($json);
    
    


    위 코드를 실행하면, 다음과 같은 JSON 문자열이 출력됩니다.

    #hostingforum.kr
    json
    
    {"name":"John Doe","age":30}
    
    


    위 코드에서 Person 클래스는 JsonSerializable 인터페이스를 구현하고, jsonSerialize 함수를 호출하면 Person 객체를 JSON 형식의 문자열로 변환합니다.

    이러한 JSON 문자열을 JSON 형식의 데이터로 변환할 때, PHP의 json_decode 함수를 사용할 수 있습니다.

    #hostingforum.kr
    php
    
    $json = '{"name":"John Doe","age":30}';
    
    $person = json_decode($json, true);
    
    print($person);
    
    


    위 코드를 실행하면, 다음과 같은 배열이 출력됩니다.

    #hostingforum.kr
    php
    
    Array
    
    (
    
        [name] => John Doe
    
        [age] => 30
    
    )
    
    


    위 코드에서 json_decode 함수를 사용하면 JSON 문자열을 PHP의 배열로 변환합니다.

    이러한 방법을 사용하면, PHP에서 JSON 형식의 데이터를 다루기 쉽게 할 수 있습니다.

    2025-04-05 14:47

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 9,521건 / 11 페이지

검색

게시물 검색