asp.net mvc使用反斜杠(escape)输出json,尽管有很多尝试要过滤

时间:2010-04-24 15:45:27

标签: asp.net asp.net-mvc json asp.net-mvc-2

我有一个asp.net控制器输出Json作为结果

它的一部分在这里

returnString += string.Format(@"{{""filename"":""{0}"",""line"":[", file.Filename);

我得到的是:

"{\"DPI\":\"66.8213457076566\",\"width\":\"563.341067\",\"editable\":\"True\",\"pricecat\":\"6\",\"numpages\":\"2\",\"height\":\"400\",\"page\":[{\"filename\":\"999_9_1.jpg\",\"line\":[]},{\"filename\":\"999_9_2.jpg\",\"line\":[]}]]"

我试图通过以下方法返回:

return Json(returnString);
return Json(returnString.Replace("\\","");

返回Json会将我的字符串序列化为一个jSon字符串,我知道但它喜欢逃避 由于某种原因,我怎么能摆脱它????

获取信息这是我用jQuery调用它的方式:

$.ajax({
    url:"/Products/LoadArtworkToJSon",
    type:"POST",
    dataType: "json",
    async: false,
    data:{prodid: prodid },
    success: function(data){ 
        sessvars.myData = data;
        measurements = sessvars.myData;
        $("#loading").remove();

    //empty the canvas and create a new one with correct data, always start on page 0;
    $("#movements").remove();
    $("#canvas").append("<div id=\"movements\" style=\"width:" + measurements.width + "px; height:" 
            + Math.round(measurements.height) 
            + "px; display:block; border:1px solid black; background:url(/Content/products/" 
            + measurements.page[0].filename + ") no-repeat;\"></div>");

非常感谢您的帮助

感谢

1 个答案:

答案 0 :(得分:4)

您是在VS或浏览器的调试器中查看它吗?调试器在显示时会包含额外的斜杠,而实际的输出将不包含这些值。

编辑:尝试将对象传递给Json而不是自定义字符串。您的字符串已经以Json格式(ish),因此将其传递给Json会重新编码。

return Json(new { filename = "yourfilename" } );

return "yourfilename";

...等,添加您需要的任何属性。