我试图实现像这样的输出
{"status":"ok","0":{"id":"11","title":"digg","url":"http://www.digg.com"}}
但我得到了这个
{"status":"ok","0":{"id":"11","title":"digg","url":"http:\/\/www.digg.com"}}
这是用于生成json的php代码
$links = array('id'=>'11','title'=>'digg','url'=>"http://www.digg.com");
$msg = array('status'=>'ok',$links);
echo json_encode($msg);
知道造成这种情况的原因是什么?
更新 我应该更清楚 如果你注意到实际的url,它会在输出中的“/”之前插入“\”。这应该发生,还是有办法阻止这个?
答案 0 :(得分:2)
是。 JSON specs。
答案 1 :(得分:2)
它们都是等效的JSON,所以它无关紧要。 JSON字符串:
"http://www.digg.com"
和
"http:\/\/www.digg.com"
都解码为:
"http://www.digg.com"
这是一个单独的问题,但我更愿意:
$links = array(array('id'=>'11','title'=>'digg','url'=>"http://www.digg.com"));
$msg = array('status'=>'ok', 'links'=>$links);
echo json_encode($msg);
{"status":"ok","links":[{"id":"11","title":"digg","url":"http:\/\/www.digg.com"}]}
这对我来说比拥有“0”键更有意义,如果你添加更多网站,它会很好地扩展:
$links = array(array('id'=>'11','title'=>'digg','url'=>"http://www.digg.com"),
array('id'=>'12','title'=>'reddit','url'=>"http://www.reddit.com"));
$msg = array('status'=>'ok', 'links'=>$links);
echo json_encode($msg);
{"status":"ok","links":[{"id":"11","title":"digg","url":"http:\/\/www.digg.com"},
{"id":"12","title":"reddit","url":"http:\/\/www.reddit.com"}]}