任何人都可以解释为什么我的JSON出现在下面,带有额外的反斜杠。我正在使用ASP.net MVC来序列化一个数据表,当我在Visual Studio中调试它看起来都很好但是当我用firebug看时添加额外的字符?
任何想法?
"[{\"uid\":\"516219026\",\"pic\":\"http://profile.ak.net/\",\"first_name\":\"Daniel\",\"last_name\":\"James\",\"fql_query_response_Id\":0,\"LIFEID\":null}
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>"; ;
}
});
})
};
Public Function GetFaceBookFriends() As JsonResult
Dim fbFriends As New DataTable
Try
fbFriends = FacebookModel.GetFriendsAndMatchToLife()
Return Json(JsonConvert.SerializeObject(fbFriends))
Catch ex As Exception
Finally
fbFriends.Dispose()
fbFriends = Nothing
End Try
End Function
答案 0 :(得分:3)
这是Firebug在其字符串表示中显示包含JSON的字符串。可以把它想象成JSON编码包含JSON的字符串。或者更确切地说,如果您要将JSON放在Javascript中的字符串文字中,它看起来就像那样。
您的字符串实际上不包含那些反斜杠。他们只是双引号的逃脱。
答案 1 :(得分:1)
看起来Firebug正在添加转义字符。如果您将整个JSON用单引号括起来怎么办?这可能会纠正这个问题。 编辑您能提供编码JSON的代码吗?
答案 2 :(得分:1)
我建议将以下内容注入成功函数的第一行。
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});
答案 3 :(得分:1)
我解决了这个问题,我正在返回JSON数据,然后通过jquery将其更改为JSON,所以我只返回一个字符串并且jquery正确处理它。