Archive for January, 2007
Ajax로 밥먹고 살다보니 XML을 다루어야 할 일이 생긴다. 그런데, XMLHTTPRequest 돌려받은 XML을 브라우저마다 조금 미묘하게 틀리게 다루다보니 이만저만 성가신게 아니다. 그래서 언젠가부터 JSON을 애용하고 있는데, 안타깝게도 PHP에서는 버전이 5.2.0 이상이 되어야 기본으로 설치가 되어있다. PECL 이나 PEAR 등에서 설치하면 되긴 하지만, 설치보다 Copy&Paste를 선호하시는 분들을 위해 만들어보았다.
function json_encode2($data) { switch (gettype($data)) { case 'boolean': return $data?'true':'false'; case 'integer': case 'double': return $data; case 'string': return '"'.strtr($data, array('\\'=>'\\\\','"'=>'\\"')).'"'; case 'array': $rel = false; // relative array? $key = array_keys($data); foreach ($key as $v) { if (!is_int($v)) { $rel = true; break; } } $arr = array(); foreach ($data as $k=>$v) { $arr[] = ($rel?'"'.strtr($k, array('\\'=>'\\\\','"'=>'\\"')).'":':'').json_encode2($v); } return $rel?'{'.join(',', $arr).'}':'['.join(',', $arr).']'; default: return '""'; } }
아래는 대충 만든 예제이다.
$data2 = array(0,1,2,3,array('beskin'=>'31')); $data = array( 'test'=>'test data', 'sample'=>'sample string', 'data2'=>$data2, 'bool'=>true, 'number_data'=>33282, 'pi'=>3.14 ); echo '## json_encode'; echo json_encode($data); echo '## json_encode2'; echo json_encode2($data);
원래 있는 json_encode 함수와의 비교를 위해 함수 이름을 json_encode2로 작성하였다.
## json_encode {"test":"test data","sample":"sample string","data2":[0,1,2,3,{"beskin":"31"}],"bool":true,"number_data":33282,"pi":3.14} ## json_encode2 {"test":"test data","sample":"sample string","data2":[0,1,2,3,{"beskin":"31"}],"bool":true,"number_data":33282,"pi":3.14}

오늘 뜬 최고의 유머기사. “네이버, 온라인 북시장 점령(?)”
네이버 북마크 서비스가…. 온라인 북시장을 점령하고 그걸 넘어서서 오프라인 서점을 위협하고 있단다.

웃겨죽는줄 알았다. -_-;; 북마크가 그 북마크가 아니라고…
그럼…. del.icio.us 는 세계 최대의 온라인 서점이게? ㅋㅋ