【发布时间】:2020-03-18 01:18:44
【问题描述】:
我有以下 API 代码来获得单个结果响应,但我收到错误 json.net 抱怨
当我删除此行var Product = prdList .FirstOrDefault(a => a.ID == productID); 和return Json(prdList); 时,它工作正常,但返回表中的每一行。我怎样才能得到一条记录?
这里是代码
[HttpGet("{productID}")]
public async Task<IActionResult> Getproduct(int productID)
{
var prdList = (await rpsService.Getrps(productID)).ToList();
var Product = prdList .FirstOrDefault(a => a.ID == productID);
return Json(Product);
}
这是我得到的错误,我检索了正确的信息,但是当我加载页面时出现错误
JsonSerializationException: 无法反序列化当前 JSON 对象 (例如 {"name":"value"}) 转换为类型 'System.Collections.Generic.IList`1 项目名称”,因为该类型需要 JSON 数组(例如 [1,2,3]) 正确反序列化。要修复此错误,请将 JSON 更改为 JSON 数组(例如 [1,2,3])或更改反序列化类型,使其 是一个普通的 .NET 类型(例如,不是像整数这样的原始类型,而不是 可以反序列化的集合类型(如数组或列表) 来自 JSON 对象。 JsonObjectAttribute 也可以添加到类型中 强制它从 JSON 对象反序列化。路径“productID”,行 1,位置 13。
我试过这个工作正常,但显示所有行
[HttpGet("{productID}")]
public async Task<IActionResult> GetProduct(int productID)
{
var prdList = (await rpsService.Getrps(productID)).ToList();
return Json(prdList );
}
【问题讨论】:
-
“归还一切”是什么意思?它是产品列表还是相关表格的任何其他记录?
-
@RangaDewasinghe 我的意思是表格中的每一行
-
'Deserialize' 暗示问题出在您的代码中调用此 API,该代码在哪里?如果它需要一个数组,您的意思是返回
Where(a => a.ID == productID)而不是FirstOrDefault(a => a.ID == productID)? -
@lan Mercer 我想要的,谢谢。
标签: json asp.net-mvc linq asp.net-core dependency-injection