我有这样的 json 错误:
{"errors": {"Listmodel": ["无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List`1[sistap_api.Models.AmbarHareketRequestModel] ' 因为该类型需要 JSON 数组(例如 [1,2,3])才能正确反序列化。
要修复此错误,请将 JSON 更改为 JSON 数组(例如 [1,2,3])或更改反序列化类型,使其成为正常的 .NET 类型(例如,不是像整数这样的原始类型,不是像这样的集合类型)数组或列表),可以从 JSON 对象反序列化。还可以将 JsonObjectAttribute 添加到类型中以强制其从 JSON 对象反序列化。
路径“Listmodel”,第 1 行,位置 13。"]},"status":400,"title":"发生一个或多个验证错误。","traceId":"00-3cd8a186e7bcd84f93c8c18bef8ca908-f4fbb2109d75914d-00","类型”:“https://tools.ietf.org/html/rfc7231#section-6.5.1”}
这是我在 React Native 中的获取:
const ambarHareketOnay = async () => {
const convertedData = route.params.data.map(item => ({
KullaniciId: parseInt(route.params.userId),
RuloSiparisDetayId: parseInt(item.RuloSiparisDetayID),
EskiLokasyonAmbar: parseInt(item.AmbarID),
EskiLokasyonKoridor: parseInt(item.AmbarID),
YeniLokasyonAmbar: parseInt(route.params.ambarId),
YeniLokasyonKoridor: parseInt(secilenKoridorId),
}));
console.log("data: ",convertedData);
try {
fetch(global.apiDomain + 'api/ambarHareket', {
method: 'post',
headers: {
Accept: 'application/json',
'Content-type': 'application/json',
},
body: JSON.stringify({ Listmodel: convertedData }),
})`
这是输出
console.log("data: ",convertedData);
:
data: [{"EskiLokasyonAmbar": 1, "EskiLokasyonKoridor": 1, "KullaniciId": 1, "RuloSiparisDetayId": 50328, "YeniLokasyonAmbar": 1, "YeniLokasyonKoridor": 1048}, {"EskiLokasyonAmbar": 1, "EskiLokasyonKoridor": 1, "KullaniciId": 1, "RuloSiparisDetayId": 50330, "YeniLokasyonAmbar": 1, "YeniLokasyonKoridor": 1048}]
这是 ASP.NET Core Web API 端点:
[HttpPost]
public IActionResult ambarHareketOnay ([FromBody] List<AmbarHareketRequestModel> Listmodel)
public class AmbarHareketRequestModel
{
public int KullaniciId { get; set; }
public int RuloSiparisDetayId { get; set; }
public int EskiLokasyonAmbar { get; set; }
public int EskiLokasyonKoridor { get; set; }
public int YeniLokasyonAmbar { get; set; }
public int YeniLokasyonKoridor { get; set; }
}
我犯了什么错误?
谢谢
您正在
另一个对象中移动
convertedData
。虽然 convertedData
本身是一个列表,但 { Listmodel: convertedData }
是一个对象。当您 JSON.stringify
时,您会得到一个对象,它与您收到的错误消息一致。
要解决此问题,请不要包裹它。
body: JSON.stringify(convertedData),
您不需要在 JavaScript 中指定 C# 参数的名称(“Listmodel”),因为 C# 参数具有
[FromBody]
属性。它等于整个 JSON 负载。