PHP格式化输出json数据
/**
* 格式化输出json数据
* @param $json 待输出数据
* @return 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 " ": case "
": case "
":
$char = "";
$ends_line_level = $new_line_level;
$new_line_level = NULL;
break;
}
}
if( $new_line_level !== NULL ) {
$result .= "
".str_repeat( " ", $new_line_level );
}
$result .= $char.$post;
$prev_char = $char;
}
return $result;
}
/**
* 格式化输出json数据
* @param $json 待输出数据
* @return json格式化后的数据
*/
function indent ($json) {
$result = "";
$pos = 0;
$strLen = strlen($json);
$indentStr = " ";
$newLine = "
";
$prevChar = "";
$outOfQuotes = true;
for ($i=0; $i<=$strLen; $i++) {
// Grab the next character in the string.
$char = substr($json, $i, 1);
// Are we inside a quoted string?
if ($char == """ && $prevChar != "\") {
$outOfQuotes = !$outOfQuotes;
// If this character is the end of an element,
// output a new line and indent the next line.
} else if(($char == "}" || $char == "]") && $outOfQuotes) {
$result .= $newLine;
$pos --;
for ($j=0; $j<$pos; $j++) {
$result .= $indentStr;
}
}
// Add the character to the result string.
$result .= $char;
// If the last character was the beginning of an element,
// output a new line and indent the next line.
if (($char == "," || $char == "{" || $char == "[") && $outOfQuotes) {
$result .= $newLine;
if ($char == "{" || $char == "[") {
$pos ++;
}
for ($j = 0; $j < $pos; $j++) {
$result .= $indentStr;
}
}
$prevChar = $char;
}
return $result;
}
$a = "{"_ad_url": ","_aid": 0,"_effective": 0,"_focus_desc": ","_focus_pic": ","_focus_title": ","_icourl": ","_tv_id": 0,"_type": 0,"aid": 215114700,"focus_desc": ","focus_pic": "http://pic4.qiyipic.com/common/20131210/9d4c967e06fc4fb5af2d93ba1763c8ee.jpg","focus_title": "光的棍","icourl": "http://pic7.qiyipic.com/common/20131210/e1bdd19da1ff45ca8f32a71fd8a870d7.jpg","open_type": 0,"source": ","topic_list": [],"tv_id": 0,"type": 0}";echo "<pre>"; echo indent($a); echo prettyPrint($a);
echo "</pre>";
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: php保存文章中远程图片到本地
- 下一篇:没有了
