如何将 JSON 对象数组发布到 Web API

19 浏览
0 Comments

如何将 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]List persons)
{
    return persons.Count.ToString(); // 0,预期为3
}

0
0 Comments

问题原因: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,并成功解析请求。如果仍然遇到问题,可以参考下面的屏幕截图,检查代码中是否有其它错误。

![屏幕截图](https://i.stack.imgur.com/XpKAU.png)

总结起来,解决如何将JSON对象数组发送到Web API的问题,需要注意JSON格式的正确性以及请求的content type的设置。通过修正JSON格式和设置正确的content type,我们可以成功地发送JSON对象数组到Web API并得到正确的响应。

0
0 Comments

问题的出现原因是发送的 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 的问题。

0
0 Comments

问题出现的原因是没有在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); }
});

0