使用 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() 时如何添加空格和换行符? [复制]的主要内容,如果未能解决你的问题,请参考以下文章