Javascript JSON和反斜杠
有谁能解释一下为什么我的JSON会在下面加上反斜杠。我正在使用ASP.net MVC序列化一个数据表,当我在Visual studio中调试时,一切看起来都正常,但是当我使用firebug添加额外字符时 有什么想法吗 JSONJavascript JSON和反斜杠,javascript,asp.net-mvc,json,Javascript,Asp.net Mvc,Json,有谁能解释一下为什么我的JSON会在下面加上反斜杠。我正在使用ASP.net MVC序列化一个数据表,当我在Visual studio中调试时,一切看起来都正常,但是当我使用firebug添加额外字符时 有什么想法吗 JSON [{\"uid\":\"516219026\",\"pic\":\"http://profile.ak.net/\",\"first_name\":\"Daniel\",\"last_name\":\"James\",\"fql_query_response_Id\":0
[{\"uid\":\"516219026\",\"pic\":\"http://profile.ak.net/\",\"first_name\":\"Daniel\",\"last_name\":\"James\",\"fql_query_response_Id\":0,\"LIFEID\":null}
JAVASCRIPT
function GetFBFriends() {
FB.Connect.requireSession(function() {
$.ajax({
url: "/Facebook/GetFaceBookFriends",
type: 'POST',
data: null,
dataType: 'json',
success: function(result) {
data = "<table>";
alert(result.length);
for (i = 0; i < result.length; i++) {
data += "<tr><td><td><img src=" + result[i].pic + " alt=" + result[i].first_name + " /></td><input type='checkbox' value='" + result[i].uid + "' name='friends[]' id = 'friend" + result[i].uid + "' /></td><td>" + result[i].first_name + " " + result[i].last_name + "</td></tr>";
}
data += "</table>";;
}
});
})
};
看起来Firebug正在添加转义字符。如果用单引号将整个JSON括起来会怎么样?这可能会解决问题。你能提供编码JSON的代码吗?这是Firebug,它在字符串表示中显示包含JSON的字符串。可以将其视为JSON编码一个包含JSON的字符串。或者更确切地说,如果将JSON放在Javascript中的字符串文字中,它会是这样的
您的字符串实际上不包含这些反斜杠。它们只是双引号的转义。我建议在success函数的第一行中注入以下内容
console.dir({'result':result});
这将向您显示返回的内容,而不仅仅是查看网络呼叫的结果
Firebug显示只是转义字符串,因此您可以将整个结果复制/粘贴到控制台中,以便直接进行检查/查询
var temp = {pasted-string-here}
//var temp = "[{\"uid\":\"516219026\",\"pic\":\"http://profile.ak.net/\", ... }]"
var val = JSON.parse(temp);
console.debug({"val":val});
我解决了这个问题,我返回了JSON数据,然后jquery也将其转换为JSON,所以我只返回了一个字符串,jquery正确地处理了它。当JSON被拆分为300个字符而不是两行时,它看到了这些反斜杠。JSON看起来不错,所以可能是出了什么问题?你能举个例子说明你是如何使用JSON的吗?我刚刚在原始问题中添加了JS。“[{“uid”:“516219026”,“pi…e_Id”:0,“LIFEID”:null}]”这就是我得到的?是的,这就是你真正得到的。firebug UI只是为您转义内部引号,因此您可以剪切/粘贴到js控制台中。
var temp = {pasted-string-here}
//var temp = "[{\"uid\":\"516219026\",\"pic\":\"http://profile.ak.net/\", ... }]"
var val = JSON.parse(temp);
console.debug({"val":val});