使用 json_encode() 时如何添加空格和换行符? [复制]

Posted

技术标签:

【中文标题】使用 json_encode() 时如何添加空格和换行符? [复制]【英文标题】:How to add spaces and new lines when using json_encode()? [duplicate] 【发布时间】:2019-09-28 04:13:11 【问题描述】:

我在这里看到了多个答案,但没有一个能解决我的问题,所以我注册了一个帐户来问这个问题。我现在明白 \n 不是 json 中允许的字符,因为不允许使用反斜杠,这就是问题发生的原因。

我有以下代码在 json 中编码一个数组:

<?php
$data = array('test1' => 'something1', 'test2' => 'something2', 'test3' => 'something3');
echo json_encode($data);

我正在尝试将字符串输出如下:

"test1": "something1",

"test2": "something2",

"test3": "something3"

但我得到的是:

"test1":"something1","test2":"something2","test3":"something3"

这是我的目标:

<?php
$data = array('test1' => 'something1\n', 'test2' => 'something2\n', 'test3' => 'something3\n');
echo json_encode($data);

但这会返回

"test1":"something1\n","test2":"something2\n","test3":"something3\n"

【问题讨论】:

你想在某处显示干净整洁的响应吗? @ShudhanshShekhar 是的。这就是目标。 @DanielW。你是 100% 正确的。我一定错过了这个问题,因为它完全解决了我的问题。如何将我的问题标记为重复? 【参考方案1】:

您可以向json_encode 添加第二个参数。这称为JSON_PRETTY_PRINT 常量:

<?php
$data = array('test1' => 'something1', 'test2' => 'something2', 'test3' => 'something3');
echo json_encode($data, JSON_PRETTY_PRINT);

【讨论】:

非常优雅的解决方案!正是我正在寻找的。谢谢!【参考方案2】:

您可以将JSON_PRETTY_PRINT 与标题一起使用

$data = array('test1' => 'something1', 'test2' => 'something2', 'test3' => 'something3');
header('Content-Type: application/json; charset=utf-8');
echo json_encode($data,JSON_PRETTY_PRINT);

$json= json_encode($data,JSON_PRETTY_PRINT);
printf("<pre>%s</pre>", $json);

【讨论】:

header 是做什么的? @Daan 的答案和你的一样,但没有标题 @ILovePHP 它告诉该行 header('Content-Type: application/json; charset=utf-8'); 之后的数据被视为 json 纯 PHP 有必要这样做吗?还是在拥有 html/javascript 时应该做的事情? @ILovePHP well daan 解决方案对我不起作用,我使用的是 PHP 7.1 @ILovePHP 当你想以你想要的格式打印 json 时【参考方案3】:

JSON 是一种交换格式,所以你不必太在意外观。

不管怎样,你可以使用flag constants来改变编码过程

<?php

$a = '"test1":"something1","test2":"something2","test3":"something3"';
print_r(json_encode(json_decode($a, true), JSON_PRETTY_PRINT));

查看实时示例:https://3v4l.org/CEc3L

【讨论】:

以上是关于使用 json_encode() 时如何添加空格和换行符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用json_encode回显没有反斜杠的值[重复]

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

为啥 json_encode 添加反斜杠?

如何使用法语口音对数组进行 json_encode?

如何控制 json_encode 行为?

json_encode 转化数组时,中文不转义出现乱码的解决方法