【问题标题】:How can I beautify JSON programmatically? [closed]如何以编程方式美化 JSON? [关闭]
【发布时间】: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

标签: php 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,否则时间戳会被破坏......
        猜你喜欢
        • 2011-02-06
        • 1970-01-01
        • 2011-01-30
        • 2011-07-15
        • 2015-11-26
        • 2020-07-08
        • 2013-07-04
        • 2010-11-17
        相关资源
        最近更新 更多