C# 将 json 字符串等到 “”String“”

本文关键字:String json 字符串 | 更新日期: 2023-09-27 18:36:26

我们有 2 个 mvc 应用程序当我们使用 ajax 调用将 JSON 数据从视图发送到控制器时。

(控制器和视图的代码 100% 相同)

var JsonData = {"Name" : "Jon Jonssen", "Foo": "test", "Date": new Date(2010,02,02)}
$.ajax({
    type: 'POST',
    url: "@Url.Action("TestJson")",
    data: JsonData,
    success: function(data) { alert('data: ' + JSON.stringify(data)); },
    contentType: "application/json",
    dataType: 'json'
});

型:

        public string Name { get; set; }
        public string Foo { get; set; }
        public DateTime Date { get; set; }

控制器:

    public ActionResult TestJson(JsonModel JsonModel)

应用程序 1 获取对象,如下所示:

Name = "Jan Janssen"
Foo = "test"    
Date = 2-2-2010 00:00:00

应用程序 2 获取以下内容:

Name = "'"Jan Janssen'""    
Foo = "'"test'""    
Date = 1-1-0001 00:00:00

我们似乎找不到任何区别。任何帮助都会很好。

C# 将 json 字符串等到 “”String“”

替换:

data: JsonData

跟:

data: JSON.stringify(JsonData)

您需要这样做的原因是您在 HTTP 请求中指定了contentType: "application/json",因此您必须遵守此设置并发送 JSON。

此外,如果您正确地将响应Content-Type标头设置为 application/json(如果您从控制器操作返回 JsonResult 时,则会在幕后发生),则无需显式指定dataType: 'json'。 jQuery将自动从标头推断这一点。