1

我们试图将用户输入作为 Json 返回到服务器以保存在 couchbase 中,但我们正在努力将有效的 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\"}

请帮忙,我们在序列化方面做错了吗?

4

2 回答 2

3

您在调试器中暂停时正在查看字符串,这将""使用反斜杠转义引号\

实际的 json 字符串将是:

{ "FormName" : "Form1" }

将值打印到控制台窗口,这很好。

于 2013-07-05T09:27:03.843 回答
0

你在使用 JSON.stringify 吗?

我有

            var filename = "sample.txt"
            $.ajax({
                ...
                data: { "filename" : JSON.stringify(filename) },
                ...
            });

这导致控制器中的 \sample.txt\ 。

我删除了 JSON.stringify

                data: { "filename" : filename },

这为我解决了这个问题。

于 2014-08-20T15:17:07.130 回答