Home > php教程 > php手册 > PHP格式化输出json数据例子整理

PHP格式化输出json数据例子整理

WBOY
Release: 2016-06-02 09:13:56
Original
2243 people have browsed it

输出json格式的数据是非常的简单,如果我们希望输入的json数据非常的整洁漂亮有格式我们要怎么来处理呢?下面小编就为各位介绍一下吧,希望例子能帮助到各位同学.

php直接输出json格式

php直接输出json格式,很多新手有一个误区,以为用echo json_encode($data);这样就是输出json数据了,没错这样输出文本是json格式文本而不是json数据,正确的写法是应该加一句:

<?php
header(&#39;Content-type:text/json&#39;); //这句是重点,它告诉接收数据的对象此页面输出的是json数据;
$json = {
"name":
"yovae", "password":
    "12345"
}; //虽然这行数据形式上是json格式,如果没有上面那句的话,它是不会被当做json格式的数据被处理的;
echo $json;
Copy after login

例子, 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 = &#39;&#39;;
    $pos = 0;
    $strLen = strlen($json);
    $indentStr = &#39;&#39;;
    $newLine = "\n";
    $prevChar = &#39;&#39;;
    $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 == &#39;"&#39; && $prevChar != &#39;\\&#39;) {
            $outOfQuotes = !$outOfQuotes;
            // If this character is the end of an element,
            // output a new line and indent the next line.
            
        } else if (($char == &#39;}&#39; || $char == &#39;]&#39;) && $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 == &#39;,&#39; || $char == &#39;{&#39; || $char == &#39;[&#39;) && $outOfQuotes) {
            $result.= $newLine;
            if ($char == &#39;{&#39; || $char == &#39;[&#39;) {
                $pos++;
            }
            for ($j = 0; $j < $pos; $j++) {
                $result.= $indentStr;
            }
        }
        $prevChar = $char;
    }
    return $result;
}
Copy after login

好了这样输出的的json数据库非常漂亮格式化的形式了, 在这里我就不给例子了, 大家不防进入参考一下吧 . 


永久地址:

转载随意~请带上教程地址吧^^

Related labels:
source:php.cn
Statement of this Website
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
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template