我在此问题上停留了4多个小时。我的json看起来很好,至少对于jsonLint来说,这是一个示例:
[{
"cnpj": "1",
"notasPorConsulta": "1",
"partirDe": "1"
}, {
"cnpj": "2",
"notasPorConsulta": "2",
"partirDe": "2"
}]
或
{
"NovoRastreio": [{
"cnpj": "1",
"notasPorConsulta": "1",
"partirDe": "1"
}, {
"cnpj": "2",
"notasPorConsulta": "2",
"partirDe": "2"
}]
}
这是我使用javascript发布的方式。
(async () => {
console.log(NovoRastreio);
const fetchResp = await fetch('api/values/NovoRastreio', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: NovoRastreio
})
.then();
.then(res => console.log(res.json()));
})();
我也尝试了没有异步/等待。没有成功。
首先,我创建了一个基本模型,然后使用QuickType生成了另一个模型。
public partial class NovoRastreio
{
[JsonProperty("NovoRastreio")]
public List<NovoRastreioElement> Rastreios { get; set; }
}
public partial class NovoRastreioElement
{
[JsonProperty("cnpj")]
public string Cnpj { get; set; }
[JsonProperty("notasPorConsulta")]
[JsonConverter(typeof(ParseStringConverter))]
public long NotasPorConsulta { get; set; }
[JsonProperty("partirDe")]
[JsonConverter(typeof(ParseStringConverter))]
public long PartirDe { get; set; }
}
然后,我的控制器中,我删除了所有代码,只剩下一个简单的控制台编写器,看它是否可以工作。
[HttpGet("NovoRastreio")]
public void NovoRastreioPorCnpj([FromBody]NovoRastreio rastreios )
{
System.Console.WriteLine(rastreios);
}
不是,即使我尝试使用邮递员,每次也会从标题中得到错误,而且,我在同一API中有多条其他帖子,而且效果很好,不同之处在于,其他帖子只发布了一个JSON对象,而不是多个对象的列表/数组。
答案 0 :(得分:0)
好吧,您在[JsonProperty("NovoRastreio")]
中声明了class NovoRastreio
,但是在json中没有这样的名称字段。
尝试发送如下内容:
{
"NovoRastreio":
[{
"cnpj": "1",
"notasPorConsulta": "1",
"partirDe": "1"
}, {
"cnpj": "2",
"notasPorConsulta": "2",
"partirDe": "2"
}]
}