проблема при выводе адреса http: // в подмассиве с json и php - PullRequest
0 голосов
/ 15 июня 2010

Я пытаюсь добиться такого результата, как этот

{"status":"ok","0":{"id":"11","title":"digg","url":"http://www.digg.com"}}

но вместо этого я получаю это

{"status":"ok","0":{"id":"11","title":"digg","url":"http:\/\/www.digg.com"}}

это php код, который я использую для генерации json

$links = array('id'=>'11','title'=>'digg','url'=>"http://www.digg.com");
$msg = array('status'=>'ok',$links);
echo json_encode($msg);

Есть идеи, что это вызывает?

UPDATE я должен был быть более ясным если вы заметили фактический URL, его вставка "\" перед "/" в выводе. Это должно произойти, или есть способ остановить это?

Ответы [ 2 ]

2 голосов
/ 15 июня 2010

Они оба эквивалентны действительному 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"}]}
2 голосов
/ 15 июня 2010

Да.Спецификации JSON .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...