Rumah > pembangunan bahagian belakang > tutorial php > php JSON数据格式化(美化)的方法

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

angryTom
Lepaskan: 2023-04-07 17:12:02
ke hadapan
6899 orang telah melayarinya

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

一、使用 json_encode 输出

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<?php

header(&#39;content-type:application/json;charset=utf8&#39;);

$arr = array(

    &#39;status&#39; => true,

    &#39;errMsg&#39; => &#39;&#39;,

    &#39;member&#39; =>array(

        array(

            &#39;name&#39; => &#39;李&#39;,

            &#39;gender&#39; => &#39;男&#39;

        ),

        array(

            &#39;name&#39; => &#39;赵&#39;,

            &#39;gender&#39; => &#39;女&#39;

        )

    )

);

   

echo json_encode($arr);

?>

Salin selepas log masuk

(推荐学习:PHP视频教程

输出:

1

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

Salin selepas log masuk

二、使用 jsonFormat 输出

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

<?php

   

/** Json数据格式化

* @param  Mixed  $data   数据

* @param  String $indent 缩进字符,默认4个空格

* @return JSON

*/

function jsonFormat($data, $indent=null){

   

    // 对数组中每个元素递归进行urlencode操作,保护中文字符

    array_walk_recursive($data, &#39;jsonFormatProtect&#39;);

   

    // json encode

    $data = json_encode($data);

   

    // 将urlencode的内容进行urldecode

    $data = urldecode($data);

   

    // 缩进处理

    $ret = &#39;&#39;;

    $pos = 0;

    $length = strlen($data);

    $indent = isset($indent)? $indent : &#39;    &#39;;

    $newline = "\n";

    $prevchar = &#39;&#39;;

    $outofquotes = true;

   

    for($i=0; $i<=$length; $i++){

   

        $char = substr($data, $i, 1);

   

        if($char==&#39;"&#39; && $prevchar!=&#39;\\&#39;){

            $outofquotes = !$outofquotes;

        }elseif(($char==&#39;}&#39; || $char==&#39;]&#39;) && $outofquotes){

            $ret .= $newline;

            $pos --;

            for($j=0; $j<$pos; $j++){

                $ret .= $indent;

            }

        }

   

        $ret .= $char;

          

        if(($char==&#39;,&#39; || $char==&#39;{&#39; || $char==&#39;[&#39;) && $outofquotes){

            $ret .= $newline;

            if($char==&#39;{&#39; || $char==&#39;[&#39;){

                $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(&#39;content-type:application/json;charset=utf8&#39;);

   

$arr = array(

    &#39;status&#39; => true,

    &#39;errMsg&#39; => &#39;&#39;,

    &#39;member&#39; =>array(

        array(

            &#39;name&#39; => &#39;李&#39;,

            &#39;gender&#39; => &#39;男&#39;

        ),

        array(

            &#39;name&#39; => &#39;赵&#39;,

            &#39;gender&#39; => &#39;女&#39;

        )

    )

);

   

echo jsonFormat($arr);

   

?>

Salin selepas log masuk

输出:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

{

    "status":true,

    "errMsg":"",

    "member":[

        {

            "name":"李",

            "gender":"男"

        },

        {

            "name":"赵",

            "gender":"女"

        }

    ]

}

Salin selepas log masuk

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<?php

header(&#39;content-type:application/json;charset=utf8&#39;);  

$arr = array

    &#39;status&#39; => true, 

    &#39;errMsg&#39; => &#39;&#39;, 

    &#39;member&#39; =>array

        array

            &#39;name&#39; => &#39;李&#39;, 

            &#39;gender&#39; => &#39;男&#39; 

        ), 

        array

            &#39;name&#39; => &#39;赵&#39;, 

            &#39;gender&#39; => &#39;女&#39; 

        

    

);

echo json_encode($arr, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);

Salin selepas log masuk

输出:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

{

    "status": true,

    "errMsg": "",

    "member": [

        {

            "name": "李",

            "gender": "男"

        },

        {

            "name": "赵",

            "gender": "女"

        }

    ]

}

Salin selepas log masuk

Atas ialah kandungan terperinci php JSON数据格式化(美化)的方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Isu terkini
Dapatkan: Pindahkan data JSON
daripada 1970-01-01 08:00:00
0
0
0
ralat json penyimpanan mysql
daripada 1970-01-01 08:00:00
0
0
0
Garis miring ke belakang terdapat dalam Json
daripada 1970-01-01 08:00:00
0
0
0
php - Bagaimanakah kesombongan membalas komen json?
daripada 1970-01-01 08:00:00
0
0
0
javascript - Masalah dengan memaparkan data json
daripada 1970-01-01 08:00:00
0
0
0
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan