최근 단축 URL의 API 인터페이스를 개발하면서 API에 관한 여러 글을 살펴보았는데, 가장 자주 사용되는 것이 바로 JSON 기술이었습니다. JSON은 JS 객체 표기법이라고도 하며, 가벼운 데이터 교환 형식입니다. 제 API 개발 언어가 PHP이기 때문에 데이터를 처리하는 과정에서 JSON과 PHP의 상호 작용, 즉 데이터 변환을 사용해야 합니다.

아래에서는 JSON과 배열(Array)을 변환하는 두 가지 방법을 주로 소개하겠습니다.
json_encode()
JSON은 UTF-8로 인코딩된 문자만 허용하므로 json_encode()의 매개변수는 반드시 UTF-8로 인코딩되어야 합니다. 그렇지 않으면 빈 문자나 null을 얻게 됩니다. 중국어를 GB2312 인코딩으로 사용할 때는 이 점에 특히 주의해야 합니다!
예시 1(배열)
<?php
$array_a =array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($array_a);
?>
출력
{"a":1,"b":2,"c":3,"d":4,"e":5}
예시 2(객체)
<?php
$obj->body = 'another post';
$obj->id = 21;
$obj->approved = true;
$obj->favorite_count = 1;
$obj->status = NULL;
echo json_encode($obj);
?>
출력
{
"body":"another post",
"id":21,
"approved":true,
"favorite_count":1,
"status":null
}
json_decode()
이 함수는 JSON 텍스트를 해당하는 PHP 데이터 구조로 변환하는 데 사용됩니다. 일반적으로 json_decode()는 항상 배열이 아닌 PHP 객체를 반환합니다.
예시 3
<?php
$json ='{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
?>
출력
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
PHP 연관 배열을 강제로 생성하려면 json_decode()에 매개변수 true를 추가해야 합니다.
예시 4
<?php
$json ='{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json,true));
?>
출력
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
또한 JSON은 객체(object)와 배열(array)만 표현하는 데 사용할 수 있으므로, 문자열이나 숫자에 json_decode()를 사용하면 null을 반환합니다.