【发布时间】:2017-07-25 06:10:05
【问题描述】:
我正在开发一个 Web API 项目并使用 Massive 来执行数据库任务。
在我的控制器中,我希望 Post 方法接受一个动态对象,以便 Massive Insert 方法可以直接使用它。
public class LinkController : ApiController
{
public IHttpActionResult Post(dynamic link)
{
dynamic model = new Massive.DynamicModel("main", tableName: "Links", primaryKeyField: "Id");
return Ok(model.Insert(link));
}
}
在 POST 请求中发送以下 JSON:
{
"Name":"StackOverflow",
"Url":"http://www.stackoverflow.com",
"Description":"My most visited web site!",
"FolderId":2
}
我的问题是 JSON.Net 反序列化 JSON 的方式。调用Post方法时,链接参数如预期有4个属性
但它们的类型是 Newtonsoft.Json.Linq.JValue 而不是一些原始类型(例如 Name 的字符串),Massive 不能
处理 JValue 对象。
我需要强制参数具有其属性的原始类型(通过创建自定义 JsonConverter、调整 Web API 模型绑定......)。
【问题讨论】:
标签: c# json asp.net-web-api dynamic json.net