PHP“漂亮打印”json_encode [重复]
Posted
技术标签:
【中文标题】PHP“漂亮打印”json_encode [重复]【英文标题】:PHP "pretty print" json_encode [duplicate] 【发布时间】:2011-10-29 04:03:35 【问题描述】:可能重复:Pretty-Printing JSON with php
我正在编写一个创建 JSON 文件的脚本。现在我只是使用json_encode
(PHP 5.2.x) 将数组编码为 JSON 输出。然后我将返回的值打印到文件中并保存。问题是客户端希望能够打开这些 JSON 文件以提高可读性,因此我想在 JSON 输出中添加换行符并“漂亮地打印”。关于如何做到这一点的任何想法?我唯一能看到的其他选择是根本不使用json_encode
,只需手动编写文件内容并为每一行添加我自己的换行符。
这是我得到的:
"product_name":"prod1","val1":1,"val2":8
这就是我想要的:
"product_name":"prod1",
"val1":1,
"val2":8
我想我也可以用命令后跟 \n 来替换每个逗号,括号也一样...想法?
【问题讨论】:
见this comment in the manual。 $jsonArr = '"product_name":"prod1","val1":1,"val2":8'; $jsonArr = json_decode($jsonArr); echo "";print_R($jsonArr);【参考方案1】:
PHP 从 5.4.0 开始具有 JSON_PRETTY_PRINT 选项(发布日期 2012 年 3 月 1 日)。
这应该可以完成工作:
$json = json_decode($string);
echo json_encode($json, JSON_PRETTY_PRINT);
见http://www.php.net/manual/en/function.json-encode.php
注意:如果您在 html 中打印以保留格式,请不要忘记在之前回显“
”和之后回显“”;)
【讨论】:
在 PHP JSON_PRETTY_PRINT 替换为 128 @NicCottrell 在我在这里测试时不起作用sandbox.onlinephpfunctions.com/code/… @drzaus 在那里为我工作 - 我可以在单独的行上看到 JSON 的每个键(该站点上使用的 PHP 版本甚至定义了 JSON_PRETTY_PRINT。 @beret 啊,我认为共享它会保留 PHP 设置——将 php 版本更改为低于 5.4 的任何版本,它应该回到“未格式化” 感谢<pre>json</pre>
的提示!【参考方案2】:
嗯$array = json_decode($json, true);
将使您的字符串成为一个数组,使用print_r($array, true);
可以轻松打印出来
但如果你真的想美化你的 json...Check this out
【讨论】:
@Michael Mior 你应该看到我的调试死了die(print('<pre>'.print_r($var, true).'</pre>'))
它几乎可以打印任何东西:p
我通常只是查看源代码并使用var_dump
,但不管怎样都行 :)【参考方案3】:
这是一个美化你的 json 的函数: pretty_json
【讨论】:
完美地复制并粘贴到我的 php 文件中,特别是因为我不想在我的 mac 上完成升级到 PHP 5.4 的所有工作。谢谢。 只是想知道brew install php54
的工作量很大。在 Mac 上进行开发时,很可能您已经安装了自制软件...【参考方案4】:
而对于 PHP 5.3,你可以使用这个函数,它可以嵌入到一个类中,也可以在程序风格中使用:
http://svn.kd2.org/svn/misc/libs/tools/json_readable_encode.php
【讨论】:
只需使用@Nic Cottrell 评论的 128。以上是关于PHP“漂亮打印”json_encode [重复]的主要内容,如果未能解决你的问题,请参考以下文章
PHP json_encode将行作为对象而不是数组返回[重复]
php json_encode()在斜杠之前自动添加斜杠[重复]
php json_encode utf8 char问题(mysql)[重复]
使用 PHP json_encode() 和 MySQL 返回一个 JSON 对象以传递给 jQuery 函数 [重复]