當前位置:
首頁 >
php JSON数据格式化输出方法
發布時間:2023/11/27
31
豆豆
生活随笔
收集整理的這篇文章主要介紹了
php JSON数据格式化输出方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
php 的json_encode能把數組轉換為json格式的字符串。字符串沒有縮進,中文會轉為unicode編碼,例如\u975a\u4ed4。人閱讀比較困難。現在這個方法在json_encode的基礎上再進行一次美化處理。使人能方便閱讀內容。
?
1. 使用 json_encode 輸出
1 <?php 2 3 header('content-type:application/json;charset=utf8'); 4 5 $arr = array( 6 'status' => true, 7 'errMsg' => '', 8 'member' =>array( 9 array( 10 'name' => '李逍遙', 11 'gender' => '男' 12 ), 13 array( 14 'name' => '趙靈兒', 15 'gender' => '女' 16 ) 17 ) 18 ); 19 20 echo json_encode($arr); 21 22 ?>
輸出結果為:
{"status":true,"errMsg":"","member":[{"name":"\u674e\u900d\u9065","gender":"\u7537"},{"name":"\u8d75\u7075\u513f","gender":"\u5973"}]} ?
2. 使用 jsonFormat 輸出
1 <?php 2 3 /** Json數據格式化 4 * @param Mixed $data 數據 5 * @param String $indent 縮進字符,默認4個空格 6 * @return JSON 7 */ 8 function jsonFormat($data, $indent=null){ 9 10 // 對數組中每個元素遞歸進行urlencode操作,保護中文字符 11 array_walk_recursive($data, 'jsonFormatProtect'); 12 13 // json encode 14 $data = json_encode($data); 15 16 // 將urlencode的內容進行urldecode 17 $data = urldecode($data); 18 19 // 縮進處理 20 $ret = ''; 21 $pos = 0; 22 $length = strlen($data); 23 $indent = isset($indent)? $indent : ' '; 24 $newline = "\n"; 25 $prevchar = ''; 26 $outofquotes = true; 27 28 for($i=0; $i<=$length; $i++){ 29 30 $char = substr($data, $i, 1); 31 32 if($char=='"' && $prevchar!='\\'){ 33 $outofquotes = !$outofquotes; 34 }elseif(($char=='}' || $char==']') && $outofquotes){ 35 $ret .= $newline; 36 $pos --; 37 for($j=0; $j<$pos; $j++){ 38 $ret .= $indent; 39 } 40 } 41 42 $ret .= $char; 43 44 if(($char==',' || $char=='{' || $char=='[') && $outofquotes){ 45 $ret .= $newline; 46 if($char=='{' || $char=='['){ 47 $pos ++; 48 } 49 50 for($j=0; $j<$pos; $j++){ 51 $ret .= $indent; 52 } 53 } 54 55 $prevchar = $char; 56 } 57 58 return $ret; 59 } 60 61 /** 將數組元素進行urlencode 62 * @param String $val 63 */ 64 function jsonFormatProtect(&$val){ 65 if($val!==true && $val!==false && $val!==null){ 66 $val = urlencode($val); 67 } 68 } 69 70 header('content-type:application/json;charset=utf8'); 71 72 $arr = array( 73 'status' => true, 74 'errMsg' => '', 75 'member' =>array( 76 array( 77 'name' => '李逍遙', 78 'gender' => '男' 79 ), 80 array( 81 'name' => '趙靈兒', 82 'gender' => '女' 83 ) 84 ) 85 ); 86 87 echo jsonFormat($arr); 88 89 ?>
輸出結果為:
{"status":true,"errMsg":"","member":[{"name":"李逍遙","gender":"男"},{"name":"趙靈兒","gender":"女"}] }
?
3.php5.4?以后,json_encode增加了JSON_UNESCAPED_UNICODE?,?JSON_PRETTY_PRINT?等幾個常量參數。使顯示中文與格式化更方便。
?
1 header('content-type:application/json;charset=utf8'); 2 3 $arr = array( 4 'status' => true, 5 'errMsg' => '', 6 'member' =>array( 7 array( 8 'name' => '李逍遙', 9 'gender' => '男' 10 ), 11 array( 12 'name' => '趙靈兒', 13 'gender' => '女' 14 ) 15 ) 16 ); 17 18 echo json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
輸出結果為:
{"status": true,"errMsg": "","member": [{"name": "李逍遙","gender": "男"},{"name": "趙靈兒","gender": "女"}] }
?
轉載于:https://www.cnblogs.com/joshua317/articles/4630829.html
總結
以上是生活随笔為你收集整理的php JSON数据格式化输出方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 出品人是否代表影片的投资人
- 下一篇: MVVM test