【发布时间】:2017-08-28 18:04:00
【问题描述】:
我正在尝试使用 AJAX 将 JSON 对象从客户端发送到服务器。我想获取 JSON 并将其序列化为 xml 并将其存储在 SQL Server 中。
我正在执行 POST 并使用以下命令将 JSON 作为字符串发送:
var Full_JSON = products_json[product_id];
var Message = "";
if (FULL_JSON == null) {
Message = "No Products_JSON!";
}
if (Message.length == 0) {
$.ajax({
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
url: "/Query.asmx/InsertXMLJSON",
data: "{'JSON':'" + JSON.stringify(Full_JSON) + "'}",
success: function (Record) {
if (Record.d == true) {
console.log("AJAX Success: " + JSON.stringify(Record));
}
else {
console.log("AJAX Fail: " + JSON.stringify(Record));
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log("Status: " + textStatus);
console.log("Error: " + errorThrown);
}
})
}
然后我获取传递的“JSON”字符串并调用:
public static bool InsertXMLJSON(string UserEmail, string Time, string Product, string JSON)
{
System.Xml.XmlDocument xmlJSON = JsonConvert.DeserializeXmlNode(JSON, "root");
}
当它被调用时,我得到如下所示的异常:
解析值后遇到意外字符:Q. 路径 'Calculations.1.Calculation_Logic',第 1 行,位置 4167。
这是遇到该字符的 JSON 字符串的 sn-p:
\"Calculation_Logic\":\"Math.round((products_json[product_id][\"Questions\"][1][\"Answer\"])/(products_json[product_id][\"Questions\"][3][\"Answer\"]))\"
我注意到方括号内引号的转义似乎是问题的一部分。如果我删除引号,它会很好地解析它。
知道为什么这会导致问题吗?
【问题讨论】: