Asp.net web api JSON请求中的$type不';我不能在WebAPI中工作
它在.net核心WebAPI中,在下面的代码中不读取$typeAsp.net web api JSON请求中的$type不';我不能在WebAPI中工作,asp.net-web-api,Asp.net Web Api,它在.net核心WebAPI中,在下面的代码中不读取$type // POST api/values [HttpPost("Order")] public string Order([FromBody] OrderRequest rq) { var a = new OrderRequest { Version = "12", Typea = new MsgType { A = new MsgTypeA
// POST api/values
[HttpPost("Order")]
public string Order([FromBody] OrderRequest rq)
{
var a = new OrderRequest
{
Version = "12",
Typea = new MsgType
{
A = new MsgTypeA
{
Item = new MsgSubTypeA
{
SubA = "TEST"
}
}
}
};
return JsonConvert.SerializeObject(a, Formatting.Indented, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto//.All
});
}
请求是
{
"Typea": {
"A": {"Item": {
"$type": "Services.WebReference.MsgSubTypeA, Services.WebReference",
"SubA":"TEST"
}
}}
}
}
它不能读取$type,也不能将“Item”转换为正确的类型,而是转换为它的基类。但是,每个JsonConvert.SerializeObject生成的响应显示相同的JSON
怎么了?现在已经解决了
public string Order([FromBody] JObject rq)
{
var obj = JsonConvert.DeserializeObject<OrderRequest>(rq.ToString(), new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Auto
});
请求对象在rq中。您在控制器中的何处使用该对象?@MarcusH sorry。。我不理解你的问题。这对我帮助很大,但在我的案例中,我有两个不同的项目,因为名称空间不同,所以我使用replace来解决它,以更改Json对象中错误的名称空间。
services
.AddMvc()
.AddJsonOptions(options =>
{
options.SerializerSettings.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.Auto;
})