在進行接口調試或接口說明時,常常需要把接口返回的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>';
最終頁面輸出效果: