PHP - 在网页里格式化输出(打印)JSON字符串
程序员文章站
2024-01-13 11:42:40
...
在进行接口调试或接口说明时,常常需要把接口返回的JSON数据以一种友好、易读的方式进行展现。
下面介绍一种在网页里格式化输出(打印)JSON字符串的简单方式。
原始字符串
原始字符串需要符合JSON要求的标准格式,可以包含中文,如:
//原始字符串,JSON格式
$origin_str = '{"code":200,"data":[{"color":"red","name":"红色","rgb":"ff0000"}, {"color":"green","name":"绿色","rgb":"00ff00"},{"color":"blue","name":"蓝色","rgb":"0000ff"}]}';
对原始字符串重新进行编解码
分别使用 json_decode()
和 json_encode()
方法对原始字符串进行一次解码和编码操作,重新生成JSON字符串。
表面上看,重新生成的字符串和原始字符串没有什么不同,但如果跳过直接进行下一步,无法得到最终的格式化输出效果。
//对原始字符串进行解码,转换为PHP对象或数组
$json_obj = json_decode($origin_str);
//对PHP对象或数组重新进行JSON编码,生成新的字符串
//默认情况下,字符串中的中文会进行Unicode编码
$json_str = json_encode($json_obj);
echo $json_str;
此时的页面输出效果:
格式化输出
有两个要点:
- 对
json_encode()
增加JSON_UNESCAPED_UNICODE
和JSON_PRETTY_PRINT
两个配置参数 - 把打印内容放在
<pre>
标签中
最终代码如下:
//原始字符串,JSON格式
$origin_str = '{"code":200,"data":[{"color":"red","name":"红色","rgb":"ff0000"},{"color":"green","name":"绿色","rgb":"00ff00"},{"color":"blue","name":"蓝色","rgb":"0000ff"}]}';
//对原始字符串进行解码,转换为PHP对象或数组
$json_obj = json_decode($origin_str);
//对PHP对象或数组重新进行JSON编码,生成新的字符串
//默认情况下,字符串中的中文会进行Unicode编码
//多个配置参数之间,用竖线分隔
$json_str = json_encode($json_obj, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
//页面输出
echo '<pre>';
echo $json_str;
echo '</pre>';
最终页面输出效果: