繁体   English   中英

为什么代码没有以Pretty Json格式打印?

[英]Why the code is not printing in Pretty Json format?

这是我的代码:

<?php
$result = dns_get_record("php.net",DNS_ANY);

echo json_encode(array('data' => $result), JSON_PRETTY_PRINT);
?>

我试图将输出打印成漂亮的json格式,但不明白为什么它不打印漂亮的json。
这是每次尝试后得到的输出:

{ "data": [ { "host": "php.net", "class": "IN", "ttl": 30, "type": "MX", "pri": 0, "target": "php-smtp2.php.net" }, { "host": "php.net", "class": "IN", "ttl": 300, "type": "TXT", "txt": "v=spf1 ip4:72.52.91.12 ip6:2a02:cb41::8 ip4:140.211.15.143 ?all", "entries": [ "v=spf1 ip4:72.52.91.12 ip6:2a02:cb41::8 ip4:140.211.15.143 ?all" ] }, { "host": "php.net", "class": "IN", "ttl": 300, "type": "SOA", "mname": "ns1.php.net", "rname": "admin.easydns.com", "serial": 1484930803, "refresh": 16384, "retry": 2048, "expire": 1048576, "minimum-ttl": 2560 }, { "host": "php.net", "class": "IN", "ttl": 300, "type": "AAAA", "ipv6": "2a02:cb41::7" }, { "host": "php.net", "class": "IN", "ttl": 49, "type": "A", "ip": "72.52.91.14" }, { "host": "php.net", "class": "IN", "ttl": 300, "type": "NS", "target": "dns3.easydns.org" }, { "host": "php.net", "class": "IN", "ttl": 300, "type": "NS", "target": "dns4.easydns.info" }, { "host": "php.net", "class": "IN", "ttl": 300, "type": "NS", "target": "dns2.easydns.net" }, { "host": "php.net", "class": "IN", "ttl": 300, "type": "NS", "target": "dns1.easydns.com" } ] }  

请帮助我。

您只需要json_encode()添加一个参数并添加<pre>标签即可。 像这样:

echo '<pre>';
echo json_encode($data, JSON_PRETTY_PRINT);
echo '</pre>';

在输出JSON之前添加此标头:

header('Content-type: Application/JSON');

如果脚本返回JSON,则无论如何都应使用此标头。 一些期望JSON响应的应用程序实际上需要它。

无论浏览器是否使用JSON_PRETTY_PRINT选项,它当前都显示在一行上,因为浏览器已收到Content-Type:text/html标头,因此它将该文本呈现为HTML文档,其中所有新行和缩进均减少为单个空格。 如果使用Content-type: Application/JSON标头,则浏览器应显示格式的JSON,而无需使用<pre>标记。 实际上,如果您确实使用这些标记,则脚本将不再返回有效的JSON。

JSON是一种数据交换格式。 它比XML之类的其他数据交换格式更易于理解,但是它的主要目的是在应用程序之间传递数据。 我认为JSON_PRETTY_PRINT的主要好处是对开发人员来说,因此他们可以在处理输出时更轻松地检查输出。 我的建议一般是不使用它,因为如果你不需要看它只是增加了不必要的开销输出,如果需要看的输出,你可以安装一个浏览器扩展,更加格式化JSON比JSON_PRETTY_PRINT有用。

暂无
暂无

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

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