当Content-Type为HTML时,php – JSON_PRETTY_PRINT无法正常工作

前端之家收集整理的这篇文章主要介绍了当Content-Type为HTML时,php – JSON_PRETTY_PRINT无法正常工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在动态地接收一个 JSON字符串,看起来像:

{ “post”: [ { “id”: “11”,“body”: “”,“image”: “images/rose.png”,“stamp”: “2013-11-04 14:50:11” } ] }

我试图漂亮地打印这个JSON字符串,如下所示:

{
    "post": [
        {
            "id": "11","body": "","image": "images/rose.png","stamp": "2013-11-04 14:50:11"
        }
    ]
}

所以,我尝试了以下代码(仅用于演示目的):

<?PHP

$str = '{ "post": [ { "id": "11","image": "images\/rose.png","stamp": "2013-11-04 14:50:11" } ] }';
$obj = json_decode($str);
echo json_encode($obj,JSON_PRETTY_PRINT);

它只输出未格式化的JSON字符串:

{ “post”: [ { “id”: “11”,“stamp”: “2013-11-04 14:50:11” } ] }

但是当我在json_encode()语句之上添加以下行时,它的工作原理如预期.

header('Content-Type: text/plain');

可能导致这个问题?当Content-Type为text / html时为什么不起作用?

解决方法

JSON_PRETTY_PRINT使用空格格式化JSON.当它显示为HTML时,将忽略空格.如果要保留格式,请将JSON包含在< pre>标签.

例如:

<?PHP

$str = '{ "post": [ { "id": "11","stamp": "2013-11-04 14:50:11" } ] }';
$obj = json_decode($str);
$json = json_encode($obj,JSON_PRETTY_PRINT);

printf("<pre>%s</pre>",$json);

如果您不想使用< pre>标签,那么你也可以使用CSS属性,white-space:pre在JSON所包含的任何元素上.

原文链接:https://www.f2er.com/html/224471.html

猜你在找的HTML相关文章