php JSON数据格式化方法
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数据格式化方法相关推荐
- 数据展示html css,css实现json数据格式化展示.html
json数据格式化 /* 方法1:设置textarea合适的宽高 */ #jsonTextarea { float: left; margin-right: 20px; width: 40%; hei ...
- php JSON数据格式化输出方法
php 的json_encode能把数组转换为json格式的字符串.字符串没有缩进,中文会转为unicode编码,例如\u975a\u4ed4.人阅读比较困难.现在这个方法在json_encode的基 ...
- php json 美化,php JSON数据格式化(美化)的方法
一.使用 json_encode 输出<?php header('content-type:application/json;charset=utf8'); $arr = array( 'sta ...
- python之json数据格式化输出方法
问题:json格式数据直接print打印无格式,在数据量较多时,不便于人眼高效找到数据 预期:json数据格式化输出,一行一个key.value 解决:使用json模块dumps函数的参数indent ...
- python返回json数据_python和flask中返回JSON数据的方法
在python中可以使用json将数据格式化为JSON格式: 1.将字典转换成JSON数据格式: s=['张三','年龄','姓名'] t={} t['data']=s return json.dum ...
- ajax写入json数据格式化,java ajax解析json数据格式化
java ajax解析json数据格式化 [2021-02-01 23:35:58] 简介: 服务器 hadoop格式化HDFS出现错误解决办法 报错信息: host:java.net.Unknow ...
- html页面加载json数据,在html中显示JSON数据的方法
背景: 有时候我们需要将json数据直接显示在页面上(比如在做一个接口测试的项目,需要将接口返回的结果直接展示),但是如果直接显示字符串,不方便查看.需要格式化一下. 解决方案: 其实JSON.str ...
- 前端实现json数据格式化展示
1. 故事前景: 后端返回给前端一串json字符串,前端需要做格式化处理并将其美观地展示给用户. 2. 效果演示: 3. 实现代码: <!DOCTYPE html> <html la ...
- 浏览器禁止跨域请求json数据解决方法--jsonp
浏览器禁止跨域请求json数据解决方法--jsonp 参考文章: (1)浏览器禁止跨域请求json数据解决方法--jsonp (2)https://www.cnblogs.com/uyisi/p/56 ...
- 推荐一个在线json数据格式化网站
json数据非常友好方便的处理: 推荐一个在线json数据格式化网站 http://json.parser.online.fr/ 转载于:https://www.cnblogs.com/cocoaji ...
最新文章
- cocos2d-x实例学习之常用类及其概要作用
- mybatis方法传入多参数
- JavaScript 标准参考教程-阅读总结(三)
- linux下vtune使用
- Linux的ext4文件系统学习笔记
- shell 脚本传参
- c/c++入门教程 - 1.基础c/c++ - 1.0 Visual Studio 2019安装环境搭建
- 《Deep Snake for Real-Time Instance Segmentation》
- 2022美国大学生数学建模竞赛
- hp 交换机远程连接_HP交换机简单配置方法
- Excel单元格区域快速导出为PDF
- Exception in thread main java.lang.UnsatisfiedLinkError: com.mzlr.jni.Calculater.Sum(II)I 	at com.
- Springboot+Vue开发的简单的后台管理系统
- 小鑫の日常系列故事(七)——小纸条
- 2018级《程序设计基础(B)I》期末上机考试 重现(第二场)
- vscode安装和配置ESLint
- Windows编程画太极图
- 美国西储大学滚动轴承实验数据
- Hadoop_GJF_MBY
- 西班牙语学习、关系代词que的用法