PHP - JsonSerializable

PHP에서 데이터를 json 문자열로 변환할 때 json_encode(mixed $value) 함수를 사용하게 된다.

이 함수를 이용해 개체를 변환할 때에도 활용할 수 있다.

기본적으로 클래스에서 public 인 프로퍼티에 대해서만 json 으로 변환된다.

protected 나 private 또는 데이터를 가공헤 json 으로 반환해야 한다면 해당 클래스에서 JsonSerializable 인터페이스를 구성해 어떤 형태로 변환할 것인지 정의할 수 있다.

해당 인터페이스는 PHP 5.4.0 이상 에서 지원하고 있다.

public 프로퍼티만 필요로 한 경우라면 별도의 인터페이스 구성 없이도 사용할 수 있다.

다만 대부분의 라이브러리에서 protected 또는 private 로 프로퍼티를 작성하고 __get(), __set() 매직 메소드를 구현해 사용하고 있고 또 권장하고 있기 때문에 그런 경우엔 다음과 같이 JsonSerializable 인터페이스를 활용할 수 있다.


(!) 기본적으로 클래스에서 public 인 프로퍼티에 대해서만 json 형태로 변환된다. public 프로퍼티만 필요한 경우엔 별도의 인터페이스 구성 없이도 사용할 수 있다.

(!) 대부분 라이브러리에서 protected 또는 private 로 프로퍼티를 작성하고 __get(), __set() 매직 메소드를 구현해 사용하고 있고 또 권장하고 있어 그런 경우엔 JsonSerializable 인터페이스를 활용할 수 있다.

 

참조

PHP의 json_encode() 함수에서 JsonSerializable 활용하기

 

  • share