gpt4 book ai didi

php - 当内容类型为 HTML 时,JSON_PRETTY_PRINT 无法按预期工作

转载 作者:IT王子 更新时间:2023-10-28 23:46:09 26 4
gpt4 key购买 nike

我正在动态接收一个 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 包含的任何元素上。

关于php - 当内容类型为 HTML 时,JSON_PRETTY_PRINT 无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20032332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com