如何以编程方式美化 JSON? [关闭]

Posted

技术标签:

【中文标题】如何以编程方式美化 JSON? [关闭]【英文标题】:How can I beautify JSON programmatically? [closed] 【发布时间】:2011-10-04 02:22:33 【问题描述】:

您可能会说这是 this question 的副本,但那里没有回答原始问题。问题的重要部分是:programmatically?

有没有php函数?本土的还是自制的?

【问题讨论】:

我想知道你是否可以调整它以使其适用于 JSON:beautifyphp.sourceforge.net/docs json_decode 后跟var_dump 的输出缓冲可以工作,尽管不是最干净的解决方案。 nl2br(json_encode(json_decode('"test":["my":"json","string":"with","pretty":"print"]'), JSON_PRETTY_PRINT)) 不谈性能,你自己做一个性能测试你的JSON 【参考方案1】:

json_encode() 有一个标志 JSON_PRETTY_PRINT

echo json_encode($data, JSON_PRETTY_PRINT);

【讨论】:

为了获得更好的样式,您可以将编码的 JSON 输出放在
标记之间。像
 YOUR_JSONDATA 
【参考方案2】:

现在有同样的问题。但正如你一样,我也有 php

【讨论】:

【参考方案3】:

这个简单的技巧为我完成了这项工作,我不需要任何额外的库或函数:

$json = '"status":"0","status_translated":"Request successful!","data":"1"';
$json_beautified = str_replace(array("", "", '","'), array("<br />&nbsp;&nbsp;&nbsp;&nbsp;", "<br />", '",<br />&nbsp;&nbsp;&nbsp;&nbsp;"'), $json);

结果如下:


    "status":"0",
    "status_translated":"Request successful!",
    "data":"1"

这仅适用于深入 1 步的 json 代码,希望对您有所帮助。

【讨论】:

【参考方案4】:

对于命令行使用,可以使用js美化器。无需与外部网站共享您的数据。

https://github.com/vivekpathak/tools/blob/master/jb/jb

【讨论】:

【参考方案5】:

我创建了一个支持多个深度级别的非破坏性 JSON 美化器。

/**
 * JSON beautifier
 * 
 * @param string    The original JSON string
 * @param   string  Return string
 * @param string    Tab string
 * @return string
 */
function pretty_json($json, $ret= "\n", $ind="\t") 

    $beauty_json = '';
    $quote_state = FALSE;
    $level = 0; 

    $json_length = strlen($json);

    for ($i = 0; $i < $json_length; $i++)
                                   

        $pre = '';
        $suf = '';

        switch ($json[$i])
        
            case '"':                               
                $quote_state = !$quote_state;                                                           
                break;

            case '[':                                                           
                $level++;               
                break;

            case ']':
                $level--;                   
                $pre = $ret;
                $pre .= str_repeat($ind, $level);       
                break;

            case '':

                if ($i - 1 >= 0 && $json[$i - 1] != ',')
                
                    $pre = $ret;
                    $pre .= str_repeat($ind, $level);                       
                   

                $level++;   
                $suf = $ret;                                                                                                                        
                $suf .= str_repeat($ind, $level);                                                                                                   
                break;

            case ':':
                $suf = ' ';
                break;

            case ',':

                if (!$quote_state)
                  
                    $suf = $ret;                                                                                                
                    $suf .= str_repeat($ind, $level);
                
                break;

            case '':
                $level--;   

            case ']':
                $pre = $ret;
                $pre .= str_repeat($ind, $level);
                break;

        

        $beauty_json .= $pre.$json[$i].$suf;

    

    return $beauty_json;

   

【讨论】:

case ':' 需要评估quote_state,否则时间戳会被破坏......

以上是关于如何以编程方式美化 JSON? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中美化 JSON?

如何美化 JSON 以在 TextBox 中显示?

如何在 ReactJS 中美化解析的 JSON? [复制]

寻找 Java 代码美化器(或者可能不是美化,而是让代码更优雅的东西)[关闭]

api网关中的响应模板不以美化格式返回json

使用 AutoHotkey 解析、生成和美化/格式化 Json?