我知道 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]
"}
这可能吗?也许是正则表达式?另外,我不想要那些反斜杠 - 可以将它们删除吗?
php有一些常量来保证json有效,所以建议一直使用这些常量来保证信息的完整性
http://www.php.net/manual/en/json.constants.php
如果你想在不使用转义反斜杠的情况下使用,只要 json 的格式很好,但不能保证在某些时候,或者某些系统拒绝你的 json ...所以总是使用 php 提供的常量确保信息的完整性。
您可以使用您的脚本代替 JSON_PRETTY_PRINT 像这样的东西
<?php
$c=array("a"=>"aaa","b"=>"bbb","c"=>array("aa","bb"));
function pretty($arr){
$new="";
$last = array_key_last($arr);
foreach($arr as $key => $val){
if($key!=$last){$virg="";}else{$virg=",";}
if(is_array($val)){
$val=json_encode($val);
$a="\"".$key."\":".$val.",";
}else{
$a="\"".$key."\":\"".$val."\",\r\n";
}
$new=$new.$a;
}
return "{
".$new."
}";
}
$c=pretty($c);
echo "<pre>".$c."</pre>";