我们正在尝试将用户输入作为Json返回到服务器以保存在couchbase中,但我们正在努力将有效的Json发送回服务器,它在“”之间添加(\)。
Json
var fileToJS = {
"FormName": "Form1",
"FormBody": //Nested, complex json continued
}
这是Jquery的帖子:
$('.sendIt').click(function () {
alert('sendIt')
var back = JSON.stringify(fileToJS);
var url = "../Home/updateFormSave";
$.post(url, { jsonStuffs: back}, function (data) {
alert('qq');
});
});
控制器:
[HttpPost]
public ActionResult updateFormSave(string jsonStuffs)
{
//Save to couchbase
FormRepository formRep = new FormRepository();
//string formIdAppended = formID + "-" + User.Identity.Name;
JavaScriptSerializer invalidJson = new JavaScriptSerializer();
dynamic validJson = invalidJson.DeserializeObject(jsonStuffs);
bool JsonForm = formRep.SaveForm("12345", validJson );
ViewBag.msg = jsonStuffs;
return View("updateFormSavedSuccess");
}
帖子有效但是如果我们调试并查看jsonStuffs,它看起来像这样
{\"FormName\":\"Form1\"}
请帮助,我们是否在序列化方面做错了什么?
答案 0 :(得分:3)
您在调试器中暂停时正在查看该字符串,该字符串将使用反斜杠""
来转义引号\
。
实际的json字符串将是:
{“FormName”:“Form1”}
将值打印到控制台窗口,没关系。
答案 1 :(得分:0)
您使用的是JSON.stringify吗?
我有
var filename = "sample.txt"
$.ajax({
...
data: { "filename" : JSON.stringify(filename) },
...
});
导致控制器中的\ sample.txt \。
我删除了JSON.stringify
data: { "filename" : filename },
为我解决了这个问题。