Possible Duplicate:
Pretty-Printing JSON with PHP

我正在编写一个创建JSON文件的脚本.现在我只使用json_encode(PHP5.2.x)将数组编码为JSON输出.然后我将返回的值打印到一个文件并保存它.问题是,客户端希望能够打开这些JSON文件以提高可读性,所以我想添加换行符,并"漂亮地打印"JSON输出.有什么办法吗?我能看到的另一种 Select 是根本不用json_encode,只需手动写入文件内容,并为每一行添加我自己的换行符.

以下是我得到的:

{"product_name":"prod1","val1":1,"val2":8}

以下是我想要的:

{
  "product_name":"prod1",
  "val1":1,
  "val2":8
}

我想我也可以用一个命令替换每个逗号,后面跟着一个\n,括号也是一样...思想?

推荐答案

PHP自5.4.0(发布日期2012年3月1日)起就有JSON_PRETTY_打印选项.

这应该可以做到:

$json = json_decode($string);
echo json_encode($json, JSON_PRETTY_PRINT);

http://www.php.net/manual/en/function.json-encode.php

Note: Don't forget to echo "<pre>" before and "</pre>" after, if you're printing it in HTML to preserve formatting ;)

Php相关问答推荐

如何使用动态键来获取Laravel Livewire表格中的错误?

添加自定义Metabox到WooCommerce管理订单,启用HPOS

未在moodle上运行的计划任务

WordPress插件和JSON不是有效的响应错误

Symfony5:如何在不登录的情况下使API路由可访问?

如何在Laravel Model中自定义多个日期属性的日期格式?

如何按类别过滤自定义帖子类型

Woocommerce 仅在前端为登录用户提供价格折扣

服务器升级到新的mysql版本8.0.34后查询错误

在 WooCommerce 中应用优惠券时显示购物车商品折扣金额

批量更新 WooCommerce 中所有产品的特定自定义字段

为什么 debug_backtrace() 不返回任何内容?

PHP Symfony 在测试.env文件中将接口自动装配作为构造函数参数,但使用接口的特定类

在wordpress注销后防止后退操作

带有 nginx 的 Symfony 不提供 .js 和 .css 文件

PHP 日期格式:ISO8601 与 ISO8601_EXPANDED

如何在 Process facade 中转义特殊字符?

将变量从中间件传递到控制器 Laravel

构建 [Controller] 时目标 [Interface] 不可实例化

如何使用先前 SELECT 的结果来 SELECT SQL 数据