zoukankan      html  css  js  c++  java
  • json数据进行格式化

    <?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);  
      
    
    
    
    
    ?>
  • 相关阅读:
    DShow实现一个avi视频的播放(含有个人解释和注释)
    指针和引用的区别
    从头看算法导论 习题2.3-7 深入分析
    程序员福利各大平台免费接口,非常适用
    NYOJ 58 最少步数
    NYOJ 42 一笔画问题
    NYOJ 1058 部分和问题
    NYOJ 21 三个水杯
    winform里面网页显示指定内容
    C#中List<T>对象的深度拷贝问题
  • 原文地址:https://www.cnblogs.com/yuwensong/p/4351123.html
Copyright © 2011-2022 走看看