【问题标题】:Backslashes in JSON stringJSON字符串中的反斜杠
【发布时间】:2010-11-10 01:43:15
【问题描述】:

我不熟悉这种格式:

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

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

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

有什么想法吗?

【问题讨论】:

    标签: asp.net jquery json


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 嗯,我正在使用 Newtonsoft 序列化我在 Web 服务中填充的数据集。由于我似乎无法在 ASP.Net 中找到这样做的本机方式,因此没有它我无法仅传递原始数据集。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多