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

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

작성일 20-12-15 22:41

페이지 정보

작성자디벨로드 조회 784회 댓글 0건

본문

여러분들 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 값을 주면 됩니다.
어렵지 않죠?

어렵지는 않지만 함수 자체를 모르고 계신다면 고생하실지도 몰라요~ 함수의 이름하고 용도만이라도 알고 계신다면 사용법은 검색하면서 써도 되니까요~~~


추천0

댓글목록

등록된 댓글이 없습니다.

Road to Deveropment
Road to Deveropment
상단으로