您好,欢迎来到岑放科技。
搜索
您的当前位置:首页php JSON数据格式化(美化)的方法

php JSON数据格式化(美化)的方法

来源:岑放科技



一、使用 json_encode 输出

<?php
header('content-type:application/json;charset=utf8');
$arr = array(
 'status' => true,
 'errMsg' => '',
 'member' =>array(
 array(
 'name' => '李',
 'gender' => '男'
 ),
 array(
 'name' => '赵',
 'gender' => '女'
 )
 )
);
 
echo json_encode($arr);
?>

(推荐学习:PHP视频教程)

输出:

{"status":true,"errMsg":"","member":[{"name":"u674e","gender":"u7537"},{"name":"u8d75","gender":"u5973"}]}

二、使用 jsonFormat 输出

<?php
 
/** Json数据格式化
* @param Mixed $data 数据
* @param String $indent 缩进字符,默认4个空格
* @return JSON
*/
function jsonFormat($data, $indent=null){
 
 // 对数组中每个元素递归进行urlencode操作,保护中文字符
 array_walk_recursive($data, 'jsonFormatProtect');
 
 // json encode
 $data = json_encode($data);
 
 // 将urlencode的内容进行urldecode
 $data = urldecode($data);
 
 // 缩进处理
 $ret = '';
 $pos = 0;
 $length = strlen($data);
 $indent = isset($indent)? $indent : ' ';
 $newline = "
";
 $prevchar = '';
 $outofquotes = true;
 
 for($i=0; $i<=$length; $i++){
 
 $char = substr($data, $i, 1);
 
 if($char=='"' && $prevchar!='\'){
 $outofquotes = !$outofquotes;
 }elseif(($char=='}' || $char==']') && $outofquotes){
 $ret .= $newline;
 $pos --;
 for($j=0; $j<$pos; $j++){
 $ret .= $indent;
 }
 }
 
 $ret .= $char;
 
 if(($char==',' || $char=='{' || $char=='[') && $outofquotes){
 $ret .= $newline;
 if($char=='{' || $char=='['){
 $pos ++;
 }
 
 for($j=0; $j<$pos; $j++){
 $ret .= $indent;
 }
 }
 
 $prevchar = $char;
 }
 
 return $ret;
}
 
/** 将数组元素进行urlencode
* @param String $val
*/
function jsonFormatProtect(&$val){
 if($val!==true && $val!==false && $val!==null){
 $val = urlencode($val);
 }
}
 
header('content-type:application/json;charset=utf8');
 
$arr = array(
 'status' => true,
 'errMsg' => '',
 'member' =>array(
 array(
 'name' => '李',
 'gender' => '男'
 ),
 array(
 'name' => '赵',
 'gender' => '女'
 )
 )
);
 
echo jsonFormat($arr);
 
?>

输出:

{
 "status":true,
 "errMsg":"",
 "member":[
 {
 "name":"李",
 "gender":"男"
 },
 {
 "name":"赵",
 "gender":"女"
 }
 ]
}

三、php5.4 以后,json_encode增加了JSON_UNESCAPED_UNICODE , JSON_PRETTY_PRINT 等几个常量参数。使显示中文与格式化更方便。

<?php
header('content-type:application/json;charset=utf8'); 
$arr = array( 
 'status' => true, 
 'errMsg' => '', 
 'member' =>array( 
 array( 
 'name' => '李', 
 'gender' => '男' 
 ), 
 array( 
 'name' => '赵', 
 'gender' => '女' 
 ) 
 ) 
);
echo json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);

输出:

{
 "status": true,
 "errMsg": "",
 "member": [
 {
 "name": "李",
 "gender": "男"
 },
 {
 "name": "赵",
 "gender": "女"
 }
 ]
}

Copyright © 2019- cenfang.cn 版权所有

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务