在ajax调用之后,转义字符不会在json中保留

时间:2017-07-17 21:12:33

标签: json

我有一个Web API,可以将数据以json格式返回到网页。 json中的一个项目是:" Title":" blah blah blah"。我遇到的一个标题包含一个用于英寸的引用:" 1"集团生产中的手动阀......"当API生成json字符串时,它会添加所有必需的转义字符,据我所知,它看起来不错:

\"Title\":\"1\\\" manual valve on group production...\"

但是当它被javascript检索时,额外的斜杠被带走:

"Title":"1" manual valve on group production..."

我希望至少有一个斜杠:

"Title":"1\" manual valve on group production..."

不用说它搞砸了JSON的解析。

这是我的API代码:

[授权]

public async Task<HttpResponseMessage> GetTop3ReportCard([FromUri] int projectId, [FromUri] string othersIdCsv = null)
   {

if (projectId <= 0)
{
    return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, "Invalid project ID.");
}

//... 

Top3AndReportCard top3AndReportCard = GetTop3AndReportCard();

string jsonString = JsonConvert.SerializeObject(top3AndReportCard);


return Request.CreateResponse(HttpStatusCode.OK, jsonString);
}

以下是调用它的javascript:

        var projectId = store.get('filterProjectId');
        $.get('ReportConfig/GetJSONString', { projectID: projectId })

    .done(function (data) {
                ra.reportConfigPage.ReportJsonParsed = JSON.parse(data); // <-- Offending line
                ra.reportConfigPage.ReportJsonParsedOriginal = JSON.parse(data);
                ra.reportConfigPage.InitCommentBoxes();
            })

    .fail(function (jqXhr, textStatus, errorThrown) {
                alert('There was an error retrieving the JSON String:\n' +

        'jqXhr = ' + jqXhr + ', textStatus = ' + textStatus + ', errorThrown = ' + errorThrown);
                $("#spinning-loader").hide();
                $("#overlay").hide();
            });

它在ajax调用中进入done()函数,但随后在标记为&#34;违规行&#34;的行中崩溃。

有人可以建议为什么斜杠在从AJAX调用返回时没有被保留?

0 个答案:

没有答案