PHP 5.2.0부터는 기본적으로 JSON 확장 기능이 내장되어 PHP에 컴파일됩니다.
JSON 직렬화 인터페이스 JsonSerialized
JsonSerialized를 구현하는 클래스는 json_encode() 시 JSON 표현을 사용자 정의할 수 있습니다.
JsonSerialized::jsonSerialize — JSON으로 직렬화해야 하는 데이터를 지정합니다
예제 #1 배열 반환
<?php class ArrayValue implements JsonSerializable { public function __construct(array $array) { $this->array = $array; } public function jsonSerialize() { return $this->array; } } $array = [1, 2, 3]; echo json_encode(new ArrayValue($array), JSON_PRETTY_PRINT); ?>
위 루틴은 다음을 출력합니다.
[ 1, 2, 3 ]
예제 2는 연관 배열을 반환합니다
<?php class ArrayValue implements JsonSerializable { public function __construct(array $array) { $this->array = $array; } public function jsonSerialize() { return $this->array; } } $array = ['foo' => 'bar', 'quux' => 'baz']; echo json_encode(new ArrayValue($array), JSON_PRETTY_PRINT); ?>
위 루틴은 다음을 출력합니다.
{ "foo": "bar", "quux": "baz" }
예제 3은 정수를 반환합니다
<?php class IntegerValue implements JsonSerializable { public function __construct($number) { $this->number = (integer) $number; } public function jsonSerialize() { return $this->number; } } echo json_encode(new IntegerValue(1), JSON_PRETTY_PRINT); ?>
위 루틴의 출력:
1
예 #4 문자열 반환
<?php class StringValue implements JsonSerializable { public function __construct($string) { $this->string = (string) $string; } public function jsonSerialize() { return $this->string; } } echo json_encode(new StringValue('Hello!'), JSON_PRETTY_PRINT); ?>
위 루틴의 출력:
"안녕하세요!"
JSON 함수
json_decode — JSON 형식으로 문자열을 인코딩합니다
json_encode — JSON으로 변수를 인코딩합니다
json_last_error_msg — 마지막 json_encode() 또는 json_decode() 호출의 오류 문자열을 반환합니다
json_last_error — 발생한 마지막 오류를 반환합니다