我使用ASP.NET核心
开发了简单的API[Route("api/[controller]/[action]")]
public class WorkunitController : Controller
{
private IRepository _repository = null;
public WorkunitController(IRepository repositoty)
{
_repository = repositoty;
}
[HttpPost]
public async Task SetTransformed([FromBody]long id)
{
if (ModelState.IsValid)
{
await _repository.SetTransformed(id);
}
}
}
}
然后在POSTMAN中我做了以下
设置正文
{ " ID":51437665009 }
当我点击发送时,我看到请求来到服务器但ModelState.IsValid是false
并且ModelState中有异常
- 异常{Newtonsoft.Json.JsonSerializationException:无法将当前JSON对象(例如{" name":" value"})反序列化为类型 ' System.Int64'因为类型需要JSON原始值(例如 string,number,boolean,null)正确反序列化。解决这个问题 错误要么将JSON更改为JSON原始值(例如字符串, number,boolean,null)或更改反序列化类型以使其为a 普通的.NET类型(例如,不是像整数这样的基本类型,而不是 可以反序列化的集合类型,如数组或List) 来自JSON对象。 JsonObjectAttribute也可以添加到类型中 强制它从JSON对象反序列化。路径' id',第2行, 第17位 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader,Type objectType,JsonContract契约,JsonProperty成员, JsonContainerContract containerContract,JsonProperty containerMember, 对象existingValue)at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader,Type objectType,Boolean checkAdditionalContent)} System.Exception {Newtonsoft.Json.JsonSerializationException}
我也尝试发送id
作为
{ \"id\":\"51437665009\"}
答案 0 :(得分:0)
如果使用json作为数据类型,则需要创建用于绑定的自定义类
public class PostModel
{
public long Id { get; set; }
}
[HttpPost]
public async Task SetTransformed([FromBody]PostModel model)
{
if (ModelState.IsValid)
{
await _repository.SetTransformed(id);
}
}