ASP.NET Core Web API 中无法反序列化当前 JSON 对象错误

问题描述 投票:0回答:1

我有这样的 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; }
}

我犯了什么错误?

谢谢

c# json list post asp.net-core-webapi
1个回答
0
投票

您正在

另一个
对象中移动 convertedData。虽然
convertedData
本身是一个列表,但
{ Listmodel: convertedData }
是一个对象。当您
JSON.stringify
时,您会得到一个对象,它与您收到的错误消息一致。

要解决此问题,请不要包裹它。

body: JSON.stringify(convertedData),

您不需要在 JavaScript 中指定 C# 参数的名称(“Listmodel”),因为 C# 参数具有

[FromBody]
属性。它等于整个 JSON 负载。

© www.soinside.com 2019 - 2024. All rights reserved.