본문 바로가기
개발/php, javascript

php의 json_decode에서 null이 나올경우 살펴봐야 할점

by 매몰 2013. 11. 11.

php 5.2.1 이상이면 json이 기본으로 내장되어 있죠...


그중 json_decode 함수는 json문자열을 php배열을 바꾸어주는 기능을 합니다...


그런데 변환이 잘 되다가도 가끔씩 배열 대신 null이 나오는 경우가 있는데요...


제가 직접 php로 웹서버를 제작중에 null이 발생했던 경우는 다음과 같이 2가지 였습니다...




첫번째는 json문자열에 \"이 포함되어 있을때입니다...

예를 들어 {\"name\":\"youngjin\"} 문자열을 json_decode로 바꾸고자 할때 null이 발생합니다...

이경우는 클라이언트나 다른 서버에서 json문자열형태로 파라미터값을 받을때 종종 나타납니다...


해결책은 당연히 다음과 같이 \"를 "로 바꾸어주면 되겠죠^^




function getJsonText($jsontext) {

return str_replace("\\\"", "\"", $jsontext);

}


$codes = json_decode(getJsonText($_POST[code]));





두번째는 php배열을 그대로 json_decode로 변환할려고 할때입니다...

이것은 java에서 JSONObject나 JSONArray 객체의 편의성때문에 햇갈려서 실수를 하는 경우인데요... 적어도 저는 그랬습니다ㅎㅎㅎ

java의 json객체는 하위 json객체를 바로 열람할수 있지만 php는 아직 그런기능이 없는듯 합니다(아니면 제가 모르는것일수도;;;)


어잿든 하위 json객체를 열람할때는 다음과 같이 문자열로 바꿔준다음 다시 배열로 바꾸어주어야 하네요^^




$json_object_array = json_decode($text, true);

$sub_json_object_array = json_decode(json_encode($json_array), true);

 



  



 

 매몰: 고영진


 1인 개발자

     실패만 하고 있어도 꿈을 포기하지 않는 남자. 

     제가 직접 경험하고 습득한 지식을 위주로 올릴게요. 






사업자 정보 표시
주식회사 머리말 | 고영진 | 서울특별시 송파구 중대로 135 서관 10층 (가락동, 아이티벤처타워) | 사업자 등록번호 : 524-88-00727 | TEL : 010-9990-3674 | Mail : gyjmeba@hanmail.net | 통신판매신고번호 : 2017-서울강남-03941호 | 사이버몰의 이용약관 바로가기