web api中接收 复杂类型数组参数(对象数组参数)
今天在工作中遇到一个问题,一个接口需要前端传递一个对象数组参数,但出现后台无法反序列对象的错误提示。
提示信息类似:
"Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.IEnumerable`1[EZAPP.Models.ViewModel.IdAndScoreVM]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly. ↵To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object. ↵Path 'vMs', line 1, position 7."
当观察传递参数的json结构时发现,
还是标准的key-value形式的json,JSON 字符串。但观察后端参数,
该需要的参数是数组 List等 集合参数。自然不会识别成key-value形式的。
小笨的解决方案是:构造一个简单的对象,类似:
因为现在参数同是一个类 一个对象,前端依然不变在Request Body中HTTP POST传递参数,如:
前端提交参数:
后端接收并解析成需要的数组/List 对象:
调试一下给你看:
可以看到,已经反序列化为需要的数据类型
完~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具