当前位置:Gxlcms > PHP教程 > php JSON数据格式化(美化)的方法

php JSON数据格式化(美化)的方法

时间:2021-07-01 10:21:17 帮助过:33人阅读


一、使用 json_encode 输出

  1. <?php
  2. header('content-type:application/json;charset=utf8');
  3. $arr = array(
  4. 'status' => true,
  5. 'errMsg' => '',
  6. 'member' =>array(
  7. array(
  8. 'name' => '李',
  9. 'gender' => '男'
  10. ),
  11. array(
  12. 'name' => '赵',
  13. 'gender' => '女'
  14. )
  15. )
  16. );
  17. echo json_encode($arr);
  18. ?>

(推荐学习:PHP视频教程)

输出:

  1. {"status":true,"errMsg":"","member":[{"name":"\u674e","gender":"\u7537"},{"name":"\u8d75","gender":"\u5973"}]}

二、使用 jsonFormat 输出

  1. <?php
  2. /** Json数据格式化
  3. * @param Mixed $data 数据
  4. * @param String $indent 缩进字符,默认4个空格
  5. * @return JSON
  6. */
  7. function jsonFormat($data, $indent=null){
  8. // 对数组中每个元素递归进行urlencode操作,保护中文字符
  9. array_walk_recursive($data, 'jsonFormatProtect');
  10. // json encode
  11. $data = json_encode($data);
  12. // 将urlencode的内容进行urldecode
  13. $data = urldecode($data);
  14. // 缩进处理
  15. $ret = '';
  16. $pos = 0;
  17. $length = strlen($data);
  18. $indent = isset($indent)? $indent : ' ';
  19. $newline = "\n";
  20. $prevchar = '';
  21. $outofquotes = true;
  22. for($i=0; $i<=$length; $i++){
  23. $char = substr($data, $i, 1);
  24. if($char=='"' && $prevchar!='\\'){
  25. $outofquotes = !$outofquotes;
  26. }elseif(($char=='}' || $char==']') && $outofquotes){
  27. $ret .= $newline;
  28. $pos --;
  29. for($j=0; $j<$pos; $j++){
  30. $ret .= $indent;
  31. }
  32. }
  33. $ret .= $char;
  34. if(($char==',' || $char=='{' || $char=='[') && $outofquotes){
  35. $ret .= $newline;
  36. if($char=='{' || $char=='['){
  37. $pos ++;
  38. }
  39. for($j=0; $j<$pos; $j++){
  40. $ret .= $indent;
  41. }
  42. }
  43. $prevchar = $char;
  44. }
  45. return $ret;
  46. }
  47. /** 将数组元素进行urlencode
  48. * @param String $val
  49. */
  50. function jsonFormatProtect(&$val){
  51. if($val!==true && $val!==false && $val!==null){
  52. $val = urlencode($val);
  53. }
  54. }
  55. header('content-type:application/json;charset=utf8');
  56. $arr = array(
  57. 'status' => true,
  58. 'errMsg' => '',
  59. 'member' =>array(
  60. array(
  61. 'name' => '李',
  62. 'gender' => '男'
  63. ),
  64. array(
  65. 'name' => '赵',
  66. 'gender' => '女'
  67. )
  68. )
  69. );
  70. echo jsonFormat($arr);
  71. ?>

输出:

  1. {
  2. "status":true,
  3. "errMsg":"",
  4. "member":[
  5. {
  6. "name":"李",
  7. "gender":"男"
  8. },
  9. {
  10. "name":"赵",
  11. "gender":"女"
  12. }
  13. ]
  14. }

三、php5.4 以后,json_encode增加了JSON_UNESCAPED_UNICODE , JSON_PRETTY_PRINT 等几个常量参数。使显示中文与格式化更方便。

  1. <?php
  2. header('content-type:application/json;charset=utf8');
  3. $arr = array(
  4. 'status' => true,
  5. 'errMsg' => '',
  6. 'member' =>array(
  7. array(
  8. 'name' => '李',
  9. 'gender' => '男'
  10. ),
  11. array(
  12. 'name' => '赵',
  13. 'gender' => '女'
  14. )
  15. )
  16. );
  17. echo json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);

输出:

  1. {
  2. "status": true,
  3. "errMsg": "",
  4. "member": [
  5. {
  6. "name": "李",
  7. "gender": "男"
  8. },
  9. {
  10. "name": "赵",
  11. "gender": "女"
  12. }
  13. ]
  14. }

以上就是php JSON数据格式化(美化)的方法的详细内容,更多请关注Gxlcms其它相关文章!

人气教程排行