繁体   English   中英

当Content-Type为HTML时,JSON_PRETTY_PRINT无法按预期工作

[英]JSON_PRETTY_PRINT not working as expected when Content-Type is HTML

我动态地收到一个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", "body": "", "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”,“body”:“”,“image”:“images / rose.png”,“stamp”:“2013-11-04 14:50:11” }]}

但是当我在json_encode()语句上面添加以下行时,它按预期工作。

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

可能导致此问题的原因是什么? Content-Typetext/html时,为什么它不起作用?

JSON_PRETTY_PRINT使用空格来格式化JSON。 当它显示为HTML时,将忽略空格。 如果要保留格式,请将JSON包装在<pre>标记中。

例如:

<?php

$str = '{ "post": [ { "id": "11", "body": "", "image": "images\/rose.png", "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的任何元素上。

你使用这个标题:

header('Content-Type: application/json; charset=utf-8');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM