일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Eclipse
- JDOM
- tomcat
- Android
- jQuery
- phonegap
- MySQL
- swingx
- Struts
- jsr 296
- WebLogic
- rowspan
- MFC
- appspresso
- PHP
- node.js
- dock
- Spring
- sencha touch
- Google Map
- ibsheet
- Ajax
- PLSQL
- 가우스
- 전자정부프레임워크
- iBATIS
- JSON
- 선택적조인
- oracle
- GPS
Archives
- Today
- Total
Where The Streets Have No Name
간단한 JSON 인코드 함수 본문
출처 : http://mygony.com/archives/944
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}
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}