3

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

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

4

2 回答 2

12

单独使用这种格式是不可能的json_encode

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

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

请参阅此处的文档。

演示!

于 2013-09-27T18:08:46.490 回答
4

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

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

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

于 2013-09-27T18:08:27.177 回答