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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

json_encode() 转义 / 带有 \ [重复]

PHP json_encode将行作为对象而不是数组返回[重复]

php json_encode()在斜杠之前自动添加斜杠[重复]

php json_encode utf8 char问题(mysql)[重复]

使用 PHP json_encode() 和 MySQL 返回一个 JSON 对象以传递给 jQuery 函数 [重复]

PHP 使用PHP DOM的漂亮打印(格式)XML