0

我有这段代码将mysql查询转换为json:

$sth = mysql_query('SELECT * FROM `staff` ORDER BY `id` DESC LIMIT 20') or die(mysql_error());
$rows = array();
while($r = mysql_fetch_array($sth)) {
    $rows[] = $r;
}
print json_encode($rows);

效果很好,但我的数据库中有一个 url 字段,这是一个示例 json 行:

{"0":"4","id":"4","1":"Noter 2","name":"Noter 2","2":null,"desc":null,"3":"http:\/\/images.apple.com\/webapps\/productivity\/images\/noter2_20091223182720-thumb.jpg","iconurl":"http:\/\/images.apple.com\/webapps\/productivity\/images\/noter2_20091223182720-thumb.jpg","4":"1262032317","date":"1262032317","5":"dBelement, LLC","company":"dBelement, LLC","6":"http:\/\/dbelement.com\/","companyurl":"http:\/\/dbelement.com\/","7":"http:\/\/noter2.dbelement.com","appurl":"http:\/\/noter2.dbelement.com"},

我怎样才能解决这个问题?

4

2 回答 2

1

我想“问题”是 URL 中是否存在反斜杠?

像 :

http:\/\/images.apple.com\/webapps\/productivity\/images\/noter2_20091223182720-thumb.jpg

好吧,这对 Javascript 来说不是问题:尝试将您的 JSON 数据分配给 Javascript 对象,并显示其中一个 URL:

var data = {"0":"4","id":"4","1":"Noter 2","name":"Noter 2","2":null,"desc":null,"3":"http:\/\/images.apple.com\/webapps\/productivity\/images\/noter2_20091223182720-thumb.jpg","iconurl":"http:\/\/images.apple.com\/webapps\/productivity\/images\/noter2_20091223182720-thumb.jpg","4":"1262032317","date":"1262032317","5":"dBelement, LLC","company":"dBelement, LLC","6":"http:\/\/dbelement.com\/","companyurl":"http:\/\/dbelement.com\/","7":"http:\/\/noter2.dbelement.com","appurl":"http:\/\/noter2.dbelement.com"};
alert(data[3]);

URL 显示正确:

http://images.apple.com/webapps/productivity/images/noter2_20091223182720-thumb.jpg

所以,反斜杠不是“问题”;-)


而且,事实上,如果您查看json.org的“字符串”部分,您会发现斜杠必须被反斜杠才能使您的字符串有效。

于 2009-12-28T22:37:21.397 回答
0

我认为这里没有问题。如果您想知道为什么 URL 看起来像这样:

http:\/\/www.example.com\/

而不是这样:

http://www.example.com/

这是因为/角色被适当地转义了。当您在 javascript 中反序列化 JSON 对象时,URL 将与您在数据库中的样子相同。

于 2009-12-28T22:38:33.473 回答