postman API控制器中的Frombody无法正确提取数据

qacovj5a  于 2022-12-13  发布在  Postman
关注(0)|答案(1)|浏览(273)

在我的代码中,我试图接收一个包含JSON主体的API,JSON主体包含数据,我设计了一个DataInfo Model类,并使用[FromBody]函数来转换数据。
我的问题是,被提取的数据(我已经将其格式化为int和double)被提取为一系列0
我的数据信息模型类:

public class DataInfo
{
    [JsonProperty("ID")]
    public int JId { get; set; }
    [JsonProperty("Temp")]
    public double JTemperature { get; set; }
    [JsonProperty("Humidity")]
    public double JHumidity { get; set; }
    [JsonProperty("WindSpeed")]
    public double JWindSpd { get; set; }
    
    [JsonProperty("SoilMoisture")]
    public double JSM { get; set; }
}

}我的API控制器:[HttpPatch(“更新”)]

public async Task<ActionResult<Device>> Update([FromBody] DataInfo data)
    {
      

        var dev = await _dbContext.Device.Where(x => x.Id == data.JId).FirstOrDefaultAsync();
        if (dev == null)
        {
            return BadRequest("no device found");
        }
        dev.Humidity = data.JHumidity;
        dev.Temp = data.JTemperature;
        dev.WindSpeed = data.JWindSpd;
        dev.SoilMoisture = data.JSM;
        dev.DateTime = DateTime.Now;
        _dbContext.SaveChanges();
        return Ok(dev);
    }

我的JSON正文:{

"ID":"1",
"Temp":"37",
"Humidity":"42",
"WindSpeed":"12",
"SoilMoisture":"14"

}我也使用了这个JSON主体,得到了相同的结果:
{【数据】:{

"ID":"1",
"Temp":"37",
"Humidity":"42",
"WindSpeed":"12",
"SoilMoisture":"14"

}
}
当我在postman中运行API调用时,我收到一个400错误,其中包含与无效设备ID相关的文本,当我让它发送设备ID和类中的其他数据点时,所有数据点都返回为0。
API调用将转到正确的控制器,但是JSON数据似乎只以0的形式存在,即使我在模型类中使用JsonPropertyName或JsonProperty赋值对其进行赋值。

pdtvr36n

pdtvr36n1#

我发现问题出在我使用的输入上。我包括了NewtonSoft,这与系统相冲突。

using BlazorApp1.Data;
using BlazorApp1.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.WebUtilities;
using Microsoft.EntityFrameworkCore;
//using Newtonsoft.Json;
using System.Net;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;

相关问题