json 형식의 문자열을 사람이 알아볼 수 있도록 출력하기 위한 함수.
PHP 5.4 이상은 json_encode의 option 중에 JSON_PRETTY_PRINT가 있으나,
하위 버전에서 json을 예쁘게 출력하기 위해선 아래와 같은 함수가 필요함.
function prettyPrint( $json )
{
$result = '';
$level = 0;
$prev_char = '';
$in_quotes = false;
$ends_line_level = NULL;
$json_length = strlen( $json );
for( $i = 0; $i < $json_length; $i++ ) {
$char = $json[$i];
$new_line_level = NULL;
$post = "";
if( $ends_line_level !== NULL ) {
$new_line_level = $ends_line_level;
$ends_line_level = NULL;
}
if( $char === '"' && $prev_char != '\\' ) {
$in_quotes = !$in_quotes;
} else if( ! $in_quotes ) {
switch( $char ) {
case '}': case ']':
$level--;
$ends_line_level = NULL;
$new_line_level = $level;
break;
case '{': case '[':
$level++;
case ',':
$ends_line_level = $level;
break;
case ':':
$post = " ";
break;
case " ": case "\t": case "\n": case "\r":
$char = "";
$ends_line_level = $new_line_level;
$new_line_level = NULL;
break;
}
}
if( $new_line_level !== NULL ) {
$result .= "\n".str_repeat( "\t", $new_line_level );
}
$result .= $char.$post;
$prev_char = $char;
}
return $result;
}
[참조]
http://www.php.net/json_encode
http://stackoverflow.com/questions/6054033/pretty-printing-json-with-php
'PHP' 카테고리의 다른 글
[PHP] PHP 시리얼 통신 (PHP, Serial communication) (0) | 2014.05.15 |
---|---|
[PHP] V8JS 엔진 PHP Extension (0) | 2014.04.07 |
[PHP] MongoDB의 _id로 기간 query 하기 (ObjectId, timestamp, interval, range) (0) | 2014.01.24 |
[PHP] 부동소수점 비교연산 (0) | 2013.11.18 |
[PHP] PHP 소스코드로 MongoDB의 sh.status (db.printShardingStatus) 정보 출력하기 (php, MongoDB, sh.status, db.printShardingStatus) (0) | 2013.11.04 |