今天在芒果小站看到一段代码,感觉挺不错的,于是转载过来。以下是原文。 将字符串形式的 JSON 数据格式化为缩进形式。通常使用 json_encode 转换出来的 JSON 串没有缩进,有这个方法就爽多了。 这里我默认使用了 tab 缩进,如果要改成空格,替换变量 $indentStr 即可。
/** * Indents a flat JSON string to make it more human-readable. * @param string $json The original JSON string to process. * @return string Indented version of the original JSON string. */ 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;
}
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|