최근 단축 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을 반환합니다.