JSON字符串中的反斜杠

时间:2010-11-10 01:43:16

标签: asp.net jquery json

我不熟悉这种格式:

{"d":"{\"Table\":[{\"pCol\":12345,\"fCol\":\"jeff\",\"lCol\":\"Smith\",\"dId\":1111111,\"tDate\":\"\\/Date(1153033200000-0700)\\/\"}]}"}

我正在使用Newtonsoft序列化我从ASP.Net webservice返回的DataSet。上面的JSON字符串是Firebug返回的内容。我已经使用jsLint检查了这个JSON,这很好。

在firebug中,我看到了JSON数据和我的第一个alert('success');但是当我尝试alert(msg.d.Table);时,我什么都没得到。 Firebug中没有警告框或错误...我认为它与这些反斜杠有关......但我不确定。

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

那些反斜杠是转义字符。它们正在转义与d关联的字符串中的双引号。您无法alert msg.d.Table的原因是因为d的值是一个字符串。您必须使用JSON.parse将该JSON字符串解析为JSON对象。 然后,您必须将Table转换回字符串以提醒它。 像这样:

var dObj = JSON.parse(msg.d);
alert(JSON.stringify(dObj.Table, null, 2)); 

答案 1 :(得分:3)

ASP.Net webservice已经将返回值序列化为JSON。 (出于安全原因,在d属性中)

当您返回预序列化的JSON数据时,它认为您正在为它提供一个普通的字符串,并继续将该字符串序列化为JSON。

因此,您将获得一个具有d属性的JSON对象,该属性包含您返回的原始JSON字符串(具有正确的转义引号)。

您应该返回原始对象并让ASP.Net为您序列化它,而不是自己序列化。