PHP - 在网页里格式化输出(打印)JSON字符串


在进行接口调试或接口说明时,常常需要把接口返回的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;

此时的页面输出效果:

{"code":200,"data":[{"color":"red","name":"红色","rgb":"ff0000"},{"color":"green","name":"绿色","rgb":"00ff00"},{"color":"blue","name":"蓝色","rgb":"0000ff"}]}

格式化输出有两个要点:

对 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);

结果

{
    "code": 200,
    "data": [{
        "color": "red",
        "name": "红色",
        "rgb": "ff0000"
    }, {
        "color": "green",
        "name": "绿色",
        "rgb": "00ff00"
    }, {
        "color": "blue",
        "name": "蓝色",
        "rgb": "0000ff"
    }]
}

声明:小小博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - PHP - 在网页里格式化输出(打印)JSON字符串


Carpe Diem and Do what I like