Webi Blog

웹아이에서 운영되고 있는 블로그입니다.

Web/PHP

PHP 배열을 손쉽게 JSON 형식으로 변환하기 | json_encode, json_decode

웹아이 2021. 8. 26. 15:25
반응형

여러분들 PHP로 개발하실 때 배열 많이 사용하시나요?

저는 정말 많이 사용하는데요~ 배열을 잘 사용한다면 더욱 편하게 개발할 수 있는 것 같아요~

 

오늘은 배열을 JSON 형식으로 변환하는 함수에 대해서 알아보겠습니다.

다들 JSON이 뭔지 아시죠?

json은 자바스크립트 언어에서 파생되어 자바스크립트의 구문 형식을 따르지만, C, C++, C#, 자바, 펄, 파이썬 등 수많은 프로그램 언어에서 쉽게 사용할 수 있는 독립형 데이터 포맷이라고 합니다.

 

그냥 쉽게는 배열이랑 비슷한데 쓰는 방법이 좀 다르다!! 그리고 print 하면 문자열로 출력이 된다고 보시면 됩니다~

물론 PHP에서는 사용이 불가능합니다!! json을 php에서 사용하려면 배열로 변환해서 사용해야 합니다.

 

저는 주로 데이터를 주고받거나 jQuery로 ajax를 사용할 때 JSON으로 많이 사용합니다.

JSON은 자바스크립트에서 배열처럼 사용이 가능하거든요~~~

 

{a:{b:"c",d:["e","f",0]}}

 

JSON은 위와 같은 형식으로 되어있습니다.~ 어떻게 생겼는지 아셨다면 이제 하나씩 알아볼게요~

참고로 json_encode, json_decode는 PHP5 버전 이상에서만 사용이 가능합니다.

 

 

json_encode

 

json_encode는 PHP의 배열을 JSON 형식으로 변환해주는 함수입니다.

 

string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )

 

사용법은 정말 별게 없습니다.

그냥 json_encode(배열)... 끝입니다... 옵션이 있긴 하지만 사용을 단 한 번도 안 해봤어요;;;

 

<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);

echo json_encode($arr);
?>

//결과
{"a":1,"b":2,"c":3,"d":4,"e":5}

 

아주 간단하게 변환이 되죠?

더욱 복잡한 연관 배열도 전혀 무리 없이 JSON으로 변환이 가능해요~

허허허... 너무 허무한가요?? 저도 좀... 허무하네요....

 

 

json_decode

 

json_decode는 json_encode와 반대로 JSON 을 PHP의 배열로 변환해주는 함수입니다.

 

mixed json_decode ( string $json [, bool $assoc = FALSE [, int $depth = 512 [, int $options = 0 ]]] )

 

json_decode도 별로 다를 게 없어 보이시죠?

json_decode도 json_decode(json 데이터) 요렇게만 써주면 사용이 가능합니다.

하지만 꼭 알고 계셔야 하는 게 있어요~ 바로 두 번째 옵션 $assoc입니다!!!!

이걸 모르고 계신다면 한참을 헤매실 수도 있어요~~~~

 

배열로 변환해 준다면서 왜 안돼!!!!!라면서 말이죠....

예제를 통해서 한번 알아보도록 하죠!!

 

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($json, true));

?>

// 결과
object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

 

뭔가 감이 오시나요?

$assoc 옵션 값을 안 주고 json_decode($json) 이렇게 사용하면 기본으로 FALSE로 적용이 됩니다.

그럼 변환된 값은 Object 형식으로 변환이 되어 버립니다.

그래서 $arr['a'] 요렇게 아무리 echo를 찍어봐도 아무것도 볼 수 없는 거죠....

 

여기서 잠깐 팁을 드리자면 Object 형식은 $arr->a 요렇게 호출이 가능하답니다.^^

 

배열로 변환하고 싶을 때는 예제처럼 json_decode($json, true) 요렇게 뒤에 true 값을 주면 됩니다.

어렵지 않죠?

 

어렵지는 않지만 함수 자체를 모르고 계신다면 고생하실지도 몰라요~

함수의 이름하고 용도만이라도 알고 계신다면 사용법은 검색하면서 써도 되니까요~~~

반응형