php 的json_encode能把数组转换为json格式的字符串。字符串没有缩进,中文会转为unicode编码。比如\u975a\u4ed4。

人阅读比較困难。

如今这种方法在json_encode的基础上再进行一次美化处理。使人能方便阅读内容。

1. 使用 json_encode 输出

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

输出:

{"status":true,"errMsg":"","member":[{"name":"\u674e\u900d\u9065","gender":"\u7537"},{"name":"\u8d75\u7075\u513f","gender":"\u5973"}]}

能够看出,这样的格式人阅读非常困难。

2. 使用 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 = "\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); ?>

输出:

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

php5.4 以后,json_encode添加了JSON_UNESCAPED_UNICODE , JSON_PRETTY_PRINT 等几个常量參数。

使显示中文与格式化更方便。

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": "女"}]
}

JSON常量參数说明:

下面常量表示了 json_last_error() 所返回的错误类型。

JSON_ERROR_NONE (integer)
没有发生错误。

自 PHP 5.3.0 起生效。

JSON_ERROR_DEPTH (integer) 到达了最大堆栈深度。自 PHP 5.3.0 起生效。 JSON_ERROR_STATE_MISMATCH (integer) 出现了下溢(underflow)或者模式不匹配。自 PHP 5.3.0 起生效。 JSON_ERROR_CTRL_CHAR (integer) 控制字符错误,可能是编码不对。自 PHP 5.3.0 起生效。 JSON_ERROR_SYNTAX (integer) 语法错误。 自 PHP 5.3.0 起生效。 JSON_ERROR_UTF8 (integer) 异常的 UTF-8 字符,或许是由于不对的编码。 此常量自 PHP 5.3.1 起生效。

以下的常量能够和 json_encode() 的 form 选项结合使用。

JSON_HEX_TAG (integer)
全部的 < 和 > 转换成 \u003C 和 \u003E。 自 PHP 5.3.0 起生效。JSON_HEX_AMP (integer)
全部的 & 转换成 \u0026。 自 PHP 5.3.0 起生效。JSON_HEX_APOS (integer)
全部的 ' 转换成 \u0027。

自 PHP 5.3.0 起生效。

JSON_HEX_QUOT (integer) 全部的 " 转换成 \u0022。 自 PHP 5.3.0 起生效。 JSON_FORCE_OBJECT (integer) 使一个非关联数组输出一个类(Object)而非数组。 在数组为空而接受者须要一个类(Object)的时候尤事实上用。 自 PHP 5.3.0 起生效。 JSON_NUMERIC_CHECK (integer) 将全部数字字符串编码成数字(numbers)。 自 PHP 5.3.3 起生效。

JSON_BIGINT_AS_STRING (integer) 将大数字编码成原始字符原来的值。 自 PHP 5.4.0 起生效。 JSON_PRETTY_PRINT (integer) 用空白字符格式化返回的数据。 自 PHP 5.4.0 起生效。 JSON_UNESCAPED_SLASHES (integer) 不要编码 /。 自 PHP 5.4.0 起生效。 JSON_UNESCAPED_UNICODE (integer) 以字面编码多字节 Unicode 字符(默认是编码成 \uXXXX)。

自 PHP 5.4.0 起生效。

php JSON数据格式化方法相关推荐

  1. 数据展示html css,css实现json数据格式化展示.html

    json数据格式化 /* 方法1:设置textarea合适的宽高 */ #jsonTextarea { float: left; margin-right: 20px; width: 40%; hei ...

  2. php JSON数据格式化输出方法

    php 的json_encode能把数组转换为json格式的字符串.字符串没有缩进,中文会转为unicode编码,例如\u975a\u4ed4.人阅读比较困难.现在这个方法在json_encode的基 ...

  3. php json 美化,php JSON数据格式化(美化)的方法

    一.使用 json_encode 输出<?php header('content-type:application/json;charset=utf8'); $arr = array( 'sta ...

  4. python之json数据格式化输出方法

    问题:json格式数据直接print打印无格式,在数据量较多时,不便于人眼高效找到数据 预期:json数据格式化输出,一行一个key.value 解决:使用json模块dumps函数的参数indent ...

  5. python返回json数据_python和flask中返回JSON数据的方法

    在python中可以使用json将数据格式化为JSON格式: 1.将字典转换成JSON数据格式: s=['张三','年龄','姓名'] t={} t['data']=s return json.dum ...

  6. ajax写入json数据格式化,java ajax解析json数据格式化

    java ajax解析json数据格式化 [2021-02-01 23:35:58]  简介: 服务器 hadoop格式化HDFS出现错误解决办法 报错信息: host:java.net.Unknow ...

  7. html页面加载json数据,在html中显示JSON数据的方法

    背景: 有时候我们需要将json数据直接显示在页面上(比如在做一个接口测试的项目,需要将接口返回的结果直接展示),但是如果直接显示字符串,不方便查看.需要格式化一下. 解决方案: 其实JSON.str ...

  8. 前端实现json数据格式化展示

    1. 故事前景: 后端返回给前端一串json字符串,前端需要做格式化处理并将其美观地展示给用户. 2. 效果演示: 3. 实现代码: <!DOCTYPE html> <html la ...

  9. 浏览器禁止跨域请求json数据解决方法--jsonp

    浏览器禁止跨域请求json数据解决方法--jsonp 参考文章: (1)浏览器禁止跨域请求json数据解决方法--jsonp (2)https://www.cnblogs.com/uyisi/p/56 ...

  10. 推荐一个在线json数据格式化网站

    json数据非常友好方便的处理: 推荐一个在线json数据格式化网站 http://json.parser.online.fr/ 转载于:https://www.cnblogs.com/cocoaji ...

最新文章

  1. cocos2d-x实例学习之常用类及其概要作用
  2. mybatis方法传入多参数
  3. JavaScript 标准参考教程-阅读总结(三)
  4. linux下vtune使用
  5. Linux的ext4文件系统学习笔记
  6. shell 脚本传参
  7. c/c++入门教程 - 1.基础c/c++ - 1.0 Visual Studio 2019安装环境搭建
  8. 《Deep Snake for Real-Time Instance Segmentation》
  9. 2022美国大学生数学建模竞赛
  10. hp 交换机远程连接_HP交换机简单配置方法
  11. Excel单元格区域快速导出为PDF
  12. Exception in thread main java.lang.UnsatisfiedLinkError: com.mzlr.jni.Calculater.Sum(II)I at com.
  13. Springboot+Vue开发的简单的后台管理系统
  14. 小鑫の日常系列故事(七)——小纸条
  15. 2018级《程序设计基础(B)I》期末上机考试 重现(第二场)
  16. vscode安装和配置ESLint
  17. Windows编程画太极图
  18. 美国西储大学滚动轴承实验数据
  19. Hadoop_GJF_MBY
  20. 西班牙语学习、关系代词que的用法

热门文章

  1. Windows10更新提示语言不同不能保留程序和设置
  2. Sauceware Audio Scorch for Mac - 嘻哈说唱音频乐器
  3. MindNode for Mac(思维导图)下载
  4. 简约通用工作总结ppt模板
  5. 常用的多列等高布局收藏
  6. 夏日葵电商:从5大方面谈微信商城怎样提高用户体验度
  7. Java面向对象练习题之三角形
  8. CactiEZ中文版说明
  9. 我的Android进阶之旅------Android实现音乐示波器、均衡器、重低音和音场功能
  10. linux 基础命令汇总