PHP json_encode JSON_PRETTY_PRINT:如何打印不同的格式?

Posted

技术标签:

【中文标题】PHP json_encode JSON_PRETTY_PRINT:如何打印不同的格式?【英文标题】:PHP json_encode JSON_PRETTY_PRINT: how to print a different format? 【发布时间】:2013-10-04 03:10:20 【问题描述】:

我知道 php 已经提供 JSON_PRETTY_PRINT 来格式化 json 数据。如果我想要不同的格式怎么办?

$message = array(
    "Open all day" => "Sundays,Saturdays,12-12-2013, 14-10-2013",

    "Availabilty" => array(
        "12/12/2013" => array(
            30,
            60,
            30,
            0
        ),
        "13/12/2013" => array(
            30,
            0,
            30,
            60,
        ),
    ),

);

$json = json_encode($message,JSON_PRETTY_PRINT);

结果,


    "Open all day": "Sundays,Saturdays,12-12-2013, 14-10-2013",
    "Availabilty": 
        "12\/12\/2013": [
            30,
            60,
            30,
            0
        ],
        "13\/12\/2013": [
            30,
            0,
            30,
            60
        ]
    

但我更喜欢,

"Open all day":"
Sundays, 
Saturdays,
Fridays,
12/12/2013, 
14/10/2013, 
04/12/2013
",

"Availability":"
"12/12/2013":[30,60,30,0],
"13/12/2013":[30,60,30,0]
"

这可能吗?也许是一个正则表达式?另外,我不想要那些反斜杠 - 可以删除它们吗?

【问题讨论】:

【参考方案1】:

单独使用json_encode 无法获得该格式。

但为了防止斜线被转义,您可以使用JSON_UNESCAPED_SLASHES 常量:

$json = json_encode($message,JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);

请参阅文档here。

Demo!

【讨论】:

【参考方案2】:

php有一些常量来保证json是有效的,所以建议一直使用这些常量来保证信息的完整性

http://www.php.net/manual/en/json.constants.php

如果你想在没有转义反斜杠的情况下使用你可以,只要 json 格式正确,但不能保证在某些时候,或者某些系统拒绝你的 json ...所以总是使用 php提供以确保信息的完整性。

【讨论】:

以上是关于PHP json_encode JSON_PRETTY_PRINT:如何打印不同的格式?的主要内容,如果未能解决你的问题,请参考以下文章

PHP json_encode( ) 函数介绍

PHP“漂亮打印”json_encode [重复]

php中自带函数 json_encode

php json_encode 返回false

PHP的json_encode处理中文

PHP json_encode()函数兼容PHP 4