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

时间:2013-09-27 18:00:22

标签: php regex json php-5.4

我知道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]
"}

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

2 个答案:

答案 0 :(得分:7)

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

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

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

请参阅文档here

Demo!

答案 1 :(得分:3)

php有一些常量来确保json有效,因此建议始终使用这些常量来确保信息的完整性

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

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