如何将 JSON 对象数组发布到 Web API
如何将 JSON 对象数组发布到 Web API
如何将JSON数组发布到Web API?对于单个对象可以工作。
这是我尝试过的,但是控制器似乎返回的是0
而不是预期的3
。
这是我的JSON:
var sc = [{ "ID": "5", "Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a", "Table_ID": "Allergy_Trns", "Checksum": "-475090533", "LastModified": "2015-01-22T20:08:52.013" }, { "ID": "5", "Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a", "Table_ID": "Allergy_Trns", "Checksum": "-475090533", "LastModified": "2015-01-22T20:08:52.013" }, { "ID": "5", "Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a", "Table_ID": "Allergy_Trns", "Checksum": "-475090533", "LastModified": "2015-01-22T20:08:52.013" }];
AJAX调用:
$.ajax({ url: urlString, type: 'POST', data: sc, dataType: 'json', crossDomain: true, cache: false, success: function (data) { console.log(data); } });
Web API控制器:
[HttpPost] public string PostProducts([FromBody]Listpersons) { return persons.Count.ToString(); // 0,预期为3 }
问题原因:json中的一个键值对缺少了双引号。
解决方法:
1. 在json中将缺少双引号的键值对进行修正,确保格式正确。
2. 在发送参数时,需要将参数转换为json格式,并设置请求的content type为application/json。
文章内容如下:
在使用Web API时,有时我们需要将JSON对象数组发送到API。然而,有时候我们可能会遇到一些问题。例如,我们可能会遇到JSON格式错误的问题,导致API无法正确解析请求。
出现这个问题的原因可能是在JSON中缺少了双引号。例如,在以下JSON代码中,键值对"Table_ID": "Allergy_Trns"缺少了双引号:
Table_ID": "Allergy_Trns"
解决这个问题的方法是在JSON中添加双引号,修正为以下格式:
"Table_ID": "Allergy_Trns"
另外,发送参数时需要将参数转换为JSON格式,并设置请求的content type为application/json。以下是一个示例代码:
$.ajax({ url: urlString, type: 'POST', data: JSON.stringify(sc), dataType: 'json', contentType: 'application/json', crossDomain: true, cache: false, success: function (data) { console.log(data); } });
在这段代码中,`JSON.stringify(sc)`将参数`sc`转换为JSON字符串,并通过`dataType`指定了请求的数据类型为JSON。同时,通过`contentType`设置了请求的content type为application/json。
通过以上修正和设置,我们可以正确地将JSON对象数组发送到Web API,并成功解析请求。如果仍然遇到问题,可以参考下面的屏幕截图,检查代码中是否有其它错误。

总结起来,解决如何将JSON对象数组发送到Web API的问题,需要注意JSON格式的正确性以及请求的content type的设置。通过修正JSON格式和设置正确的content type,我们可以成功地发送JSON对象数组到Web API并得到正确的响应。
问题的出现原因是发送的 json 数据与服务器端对象不匹配,解决方法是在发送请求前通过设置 beforeSend 方法来设置 Content-Type,确保 json 数据与服务器端对象匹配。
具体的解决方法如下所示:
$.ajax({ beforeSend: function (xhr) { xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); }, url: urlString, type: 'POST', data: sc, dataType: 'json', contentType: "application/json", crossDomain: true, cache: false, success: function (data) { console.log(data); } });
其中,通过 beforeSend 方法设置了请求头的 Content-Type 为 application/x-www-form-urlencoded,确保发送的数据与服务器端对象匹配。然后,通过设置 contentType 为 application/json 来指定发送的数据类型为 json。最后,发送请求并在成功后打印返回的数据。
通过以上的解决方法,可以解决发送 json 对象数组到 web api 的问题。
问题出现的原因是没有在ajax请求中添加content-type头,导致WebAPI无法理解请求并使用正确的格式化程序反序列化数据。解决方法是在ajax请求中添加content-type头并将其值设置为"application/json"。
下面是解决方法的示例代码:
$.ajax({ url: urlString, type: 'POST', data: sc, dataType: 'json', contentType: "application/json", crossDomain: true, cache: false, success: function (data) { console.log(data); } });