如何以编程方式美化 JSON? [关闭]
Posted
技术标签:
【中文标题】如何以编程方式美化 JSON? [关闭]【英文标题】:How can I beautify JSON programmatically? [closed] 【发布时间】:2011-10-04 02:22:33 【问题描述】:您可能会说这是 this question 的副本,但那里没有回答原始问题。问题的重要部分是:programmatically
?
有没有php函数?本土的还是自制的?
【问题讨论】:
我想知道你是否可以调整它以使其适用于 JSON:beautifyphp.sourceforge.net/docsjson_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 /> ", "<br />", '",<br /> "'), $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? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章