【问题标题】:How can I insert multiple items of data into SQL using Web API?如何使用 Web API 将多项数据插入 SQL?
【发布时间】:2020-02-10 09:43:59
【问题描述】:

我有这样的代码:

public IHttpActionResult Post(CUSTOMER [] newCustomer)
{
    try
    {
        foreach (CUSTOMER item in newCustomer)
        {
            var AddedCust = db.CUSTOMERs.Add(item);
        }

        int insertedRecords = db.SaveChanges();
        return Ok(insertedRecords);
    }
    catch (Exception)
    {
        return BadRequest(ModelState);
    }
}

我试图通过 Postman 发布多条记录 - 但出现异常:

{

    "NAME": "test1",
    "SURNAME": "Aleksandrova",
    "BIRTHPLACE": "Minsk",
    "GENDER": "F",
    "IDENTITYNO": "AA75 857445",
    "IDENTITYPINCODE": 2552,
    "BIRTHDATE": "1970-06-19T00:00:00"
}
{

    "NAME": "test2",
    "SURNAME": "Aleksat34t34ndrova",
    "BIRTHPLACE": "Minsk",
    "GENDER": "F",
    "IDENTITYNO": "AA75 857445",
    "IDENTITYPINCODE": 2552,
    "BIRTHDATE": "1970-06-19T00:00:00"
}
{

    "NAME": "test3",
    "SURNAME": "Aleksandrova",
    "BIRTHPLACE": "Minsk",
    "GENDER": "F",
    "IDENTITYNO": "AA75 857445",
    "IDENTITYPINCODE": 2552,
    "BIRTHDATE": "1970-06-19T00:00:00"
}

错误:

"无法将当前 JSON 对象(例如 {\"name\":\"value\"})反序列化为类型 'First_API.Models.CUSTOMER[]',因为该类型需要 JSON 数组(例如 [1,2 ,3]) 以正确反序列化。\r\n要修复此错误,请将 JSON 更改为 JSON 数组(例如 [1,2,3])或将反序列化类型更改为正常的 .NET 类型(例如不是可以从 JSON 对象反序列化的原始类型(如整数,而不是数组或列表等集合类型)。

我该如何解决这个问题?

【问题讨论】:

  • 请阅读How to Ask。这个错误已经被问到 - 并且已经回答了数百次。你试过什么?
  • @CodeCaster 我找不到答案,这就是我问它的原因

标签: c# json asp.net-web-api sql-insert


【解决方案1】:

你的json body无效,Json数组需要用[ ](方括号)括起来,每条记录用,(逗号)隔开

尝试使用下面的json发送api请求

[{

    "NAME": "test1",
    "SURNAME": "Aleksandrova",
    "BIRTHPLACE": "Minsk",
    "GENDER": "F",
    "IDENTITYNO": "AA75 857445",
    "IDENTITYPINCODE": 2552,
    "BIRTHDATE": "1970-06-19T00:00:00"
},
{

    "NAME": "test2",
    "SURNAME": "Aleksat34t34ndrova",
    "BIRTHPLACE": "Minsk",
    "GENDER": "F",
    "IDENTITYNO": "AA75 857445",
    "IDENTITYPINCODE": 2552,
    "BIRTHDATE": "1970-06-19T00:00:00"
},
{

    "NAME": "test3",
    "SURNAME": "Aleksandrova",
    "BIRTHPLACE": "Minsk",
    "GENDER": "F",
    "IDENTITYNO": "AA75 857445",
    "IDENTITYPINCODE": 2552,
    "BIRTHDATE": "1970-06-19T00:00:00"
}]

【讨论】:

  • 我怎样才能只返回添加的数据本身?
  • 我知道。我得到插入记录的数量,例如我写的一条记录 return ok(value) 但这个值在循环中我怎样才能返回它?
  • @AlishSafarli,您发布的错误是不言自明的,它之前在 stackoverflow 上已解决,这可能是您的问题得到 -1 的原因
【解决方案2】:

试试

[
    {
        "NAME": "test1",
        "SURNAME": "Aleksandrova",
        "BIRTHPLACE": "Minsk",
        "GENDER": "F",
        "IDENTITYNO": "AA75 857445",
        "IDENTITYPINCODE": 2552,
        "BIRTHDATE": "1970-06-19T00:00:00"
    },
    {
        "NAME": "test2",
        "SURNAME": "Aleksat34t34ndrova",
        "BIRTHPLACE": "Minsk",
        "GENDER": "F",
        "IDENTITYNO": "AA75 857445",
        "IDENTITYPINCODE": 2552,
        "BIRTHDATE": "1970-06-19T00:00:00"
    },
    {
        "NAME": "test3",
        "SURNAME": "Aleksandrova",
        "BIRTHPLACE": "Minsk",
        "GENDER": "F",
        "IDENTITYNO": "AA75 857445",
        "IDENTITYPINCODE": 2552,
        "BIRTHDATE": "1970-06-19T00:00:00"
    }
]

【讨论】:

  • 为了完整起见,您可以添加一个解释,说明为什么要像以前那样格式化 JSON(请参阅 Prassad 的回答)。
  • “尝试”不是答案。
  • @CodeCaster 你总是可以做得更好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-11
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多