网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的范文:

 

标题 PHP生成嵌套JSON解决思路
范文
    PHP生成嵌套JSON
    ({
    "aa": [
    {
    "Id": "0",
    "title": "标题",
    },
    {
    "Id": "1",
    "title": "标题",
    }
    ],
    "bb":[
    {
    ...
    },
    {
    ....
    }
    ]
    })
    PHP如何生成这种嵌套的JSON
    ------解决方案--------------------
    /** 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 = "n";
    $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(
    'aa' => array(
    array(
    'Id' => 0,
    'title' => '标题'
    ), array( 'Id' => 1, 'title' => '标题' ), ), 'bb' => array( array( 'Id' => 2, 'title' => '标题' ), array( 'Id' => 3, 'title' => '标题' ), ));echo jsonFormat($arr);{ "aa":[ { "Id":"0", "title":"标题" }, { "Id":"1", "title":"标题" } ], "bb":[ { "Id":"2", "title":"标题" }, { "Id":"3", "title":"标题" } ]}
随便看

 

在线学习网范文大全提供好词好句、学习总结、工作总结、演讲稿等写作素材及范文模板,是学习及工作的有利工具。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/19 17:42:22