【问题标题】:PHP "pretty print" json_encode [duplicate]PHP“漂亮打印”json_encode [重复]
【发布时间】: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 来替换每个逗号,括号也一样...想法?

【问题讨论】:

  • $jsonArr = '{"product_name":"prod1","val1":1,"val2":8}'; $jsonArr = json_decode($jsonArr); echo "
    ";print_R($jsonArr);

标签: php json encode


【解决方案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。
猜你喜欢
  • 2017-05-01
  • 2021-05-11
  • 1970-01-01
  • 2016-11-30
  • 2011-08-28
相关资源
最近更新 更多