<?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 = "\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(
'status' => true,
'errMsg' => '',
'member' =>array(
array(
'name' => '李逍遥',
'gender' => '男'
),
array(
'name' => '赵灵儿',
'gender' => '女'
)
)
); echo jsonFormat($arr); ?>

最新文章

  1. 【GoLang】golang 闭包 closure 参数传递的蹊跷!
  2. laravel框架总结(十三) -- redis使用
  3. C#向文本文件中写入日志
  4. echarts一个页面动态加载两张不同图表数据
  5. Upload file
  6. 5分钟实现VS2010整合NUnit进行单元测试
  7. Ubuntu遇到Please ensure that adb is correctly located at &#39;...adb.exe&#39; and can be executed 问题解决方法
  8. [编辑器]走上atom之路1
  9. 转:视频压缩的基本概念(x264解压包)
  10. 基于ReliefF和K-means算法的医学应用实例
  11. linux文本处理常用指令总结
  12. python实现gabor滤波器提取纹理特征 提取指静脉纹理特征 指静脉切割代码
  13. leetCode练习1
  14. 测试教程网.unittest教程.1. 基本概念
  15. Python基础(字符串和编码)
  16. 【LOJ】#6434. 「PKUSC2018」主斗地
  17. thinkjs+swagger Editor
  18. 做SEO都需要具备哪些方面的知识
  19. EF 序列化实体为Json时的循环引用问题(不用自己写实体,不用匿名类型,不用EF的上下文属性)
  20. BZOJ2453:维护队列——题解

热门文章

  1. 12 stark组件之pop,按钮,url,页面
  2. code first 创建数据库,add-migration update-database
  3. wannafly 17D 01序列2
  4. 【linux报错】安装好虚拟机后,挂载光盘报错:mount:you must specify the filesystem type
  5. 【免费培训】腾讯WeTest&amp;TesterHome WorkShop | 一起学压测
  6. Java Comparator接口学习笔记
  7. 新手Python第四天(生成器)
  8. [奇葩问题] Error Domain=NSURLErrorDomain Code=-1003
  9. C++ 类 复制构造函数 The Copy Constructor
  10. 必应词典手机版(IOS版)与有道词典(IOS版)之软件分析【功能篇】【用户体验篇】