개발 Q&A

제목 json 질문드립니다.
카테고리 PHP
글쓴이 손씨가문 작성시각 2019/12/20 17:57:31
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 13192   RSS

안녕하세요.

하나만 질문드리겠습니다.

현재 CURL로 해당 JSON 데이터를 가져왔는데, NULL이 떠서요.

혹시 어느 부분이 잘못되었는지 알 수 있을까요? print_r로 그냥 찍었을 시에 문제가 없는데

json_decode 시에는 NULL이 뜹니다.

JSON 유효성 검사를 했을때는 문제가 없다고 뜹니다.

밑에는 소스 코드입니다.

NULL이뜨는 이유를 구글링 해보고, 따라해봤는데도 그대로 NULL이어서요...

 

URL로 접근 시 

{"list":[{"name":"홍길동","sex":"1","birth":"19990910","gunbul":"육군","rank":"훈련병","branch":"보병","termy":"1","termm":"0","tel":"010 11112222","email":"","course":"94","retymd":"20101130","mID":"dongki","area":"경상남도 함안군","gunbun":"1001"},{"name":"임꺽정","sex":"1","birth":"19761111","gunbul":"육군","rank":"소령","branch":"기갑","termy":"12","termm":"7","tel":"010 12345678","email":"","course":"94","retymd":"20220131","mID":"dongki2","area":"경기도 화성시","gunbun":"5678"}]}

$curl = curl_init(); 

$timeout = 5; // 0으로 하면 시간제한이 없다.

curl_setopt($curl, CURLOPT_URL, $serverUrl);

curl_setopt($curl, CURLOPT_POST, 0); 

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);

$result =  curl_exec($curl);

$result =iconv("EUC-KR","UTF-8", $result);

print_r($result); 

$data = json_decode( trim($result), true );

var_dump($data);

 

decode시에 null이뜨는데 이유를 모르겠네요.

 다음글 $.parseJSON 파싱시 "유효하지 않은 ... (1)
 이전글 IF문으로 빈값이 아닌 경우만, INSERT를 하려는데... (2)

댓글

변종원(웅파) / 2019/12/20 18:10:31 / 추천 0
iconv 하지말고 풀어보세요.
손씨가문 / 2019/12/20 18:18:09 / 추천 0

풀었을때도 동일합니다.

한글은 깨지구요 ㅠ

홍구2 / 2019/12/21 01:21:36 / 추천 0

한글쪽 상태가 안 좋은 것 같네요, 그런데 여기 올려준 글에서는 예시가 이미 UTF-8로 변환되어 있어서 재연이 안됩니다.

전체를 iconv 하지마시고 값에 해당되는 것만 콕 찝어서 변환해주면 되지 않을까요?

https://repl.it/@zidell/cikorea-qa-json

손씨가문 / 2019/12/22 15:31:00 / 추천 0

답변감사합니다.

$result =  curl_exec($curl);
// print_r($result);
 
// $data = json_decode( $result, true );
$data = json_decode( trim($result), true );
 
echo $data;
foreach($data->list as &$row) {
  foreach($row as &$r) {
$r = iconv("EUC-KR","UTF-8", $r);
  }
}
 
 
그런데 이미 $data = json_decode( trim($result), true ); 이걸 한 순간 NULL값으로 아무값이 없어서 foreach로 넘어가지 않습니다.
일단 받아오는 쪽 환경은 EUC-KR이고
이쪽환경은 UTF-8이라 한글이 깨지는 것 같구요.ㅠㅠ