输出json格式的数据是非常的简单,如果我们希望输入的json数据非常的整洁漂亮有格式我们要怎么来处理呢?下面小编就为各位介绍一下吧,希望例子能帮助到各位同学.
php直接输出json格式
php直接输出json格式,很多新手有一个误区,以为用echo json_encode($data);这样就是输出json数据了,没错这样输出文本是json格式文本而不是json数据,正确的写法是应该加一句:
<?php header('Content-type:text/json'); //这句是重点,它告诉接收数据的对象此页面输出的是json数据; $json = { "name": "yovae", "password": "12345" }; //虽然这行数据形式上是json格式,如果没有上面那句的话,它是不会被当做json格式的数据被处理的; echo $json;
例子, JSON数据格式化函数 . 将字符串形式的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 = "\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; }
好了这样输出的的json数据库非常漂亮格式化的形式了, 在这里我就不给例子了, 大家不防进入参考一下吧 .
永久地址:
转载随意~请带上教程地址吧^^