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

时间:2019-05-10 09:16:34

标签: php json

我在这里看到了多个答案,但是没有一个答案能解决我的问题,因此我开设了一个帐户问这个问题。我现在了解,\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”}

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您可以将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);

OR

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

答案 2 :(得分:0)

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