【发布时间】:2016-08-31 10:30:03
【问题描述】:
我有使用 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 中我做了以下操作
- 设置网址
- 添加标题
- “内容类型”为“应用程序/json”
-
设置正文
{ “身份证”:51437665009 }
当我点击发送时,我看到请求到达服务器但 ModelState.IsValid 是 false 并且 ModelState 中有异常
- 异常 {Newtonsoft.Json.JsonSerializationException: 无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Int64' 因为该类型需要 JSON 原始值(例如 string, number, boolean, null) 来正确反序列化。要解决这个问题 错误要么将 JSON 更改为 JSON 原始值(例如字符串, number, boolean, null) 或更改反序列化类型,使其成为 普通 .NET 类型(例如,不是像整数这样的原始类型,而不是 可以反序列化的集合类型(如数组或列表) 来自 JSON 对象。 JsonObjectAttribute 也可以添加到类型中 强制它从 JSON 对象反序列化。路径 'id',第 2 行, 位置 17. 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, 对象现有值)在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader 阅读器,类型 objectType,布尔值 checkAdditionalContent)} System.Exception {Newtonsoft.Json.JsonSerializationException}
我也试过发送id as
{ \"id\":\"51437665009\"}
【问题讨论】: