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>";
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 将数据库中查出的列表以指定的 id 作为数组的键名
- 下一篇: php JSON数据格式化方法 .