Home  >  Article  >  Backend Development  >  php JSON data formatting function

php JSON data formatting function

WBOY
WBOYOriginal
2016-07-25 08:56:251067browse
本文分享一个php版的json数据格式化函数的例子,有需要的朋友,可以作个参考,借鉴下别人的写法。

将字符串形式的 JSON 数据格式化为缩进形式。通常使用 json_encode 转换出来的 JSON 串没有缩进。 有了本文分享的这个方法,就不用再担心这个问题了。 本代码: 默认使用了 tab 缩进,如果要改成空格,替换变量 $indentStr 即可。

代码:

<?php
/**
* 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.
* @site bbs.it-home.org
*/
function indent ($json) {
 $result = '';
 $pos = 0;
 $strLen = strlen($json);
 $indentStr = ' ';
 $newLine = "\n";
 $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;
}
?>


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn