JSON和反斜杠

时间:2010-02-01 20:49:32

标签: javascript asp.net-mvc json

任何人都可以解释为什么我的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

4 个答案:

答案 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正确处理它。