.NET Core3.0+ WebApi dynamic传参中带有ValueKind属性处理方法

背景:在.NET Core3.0+框架下编写WebApi并且使用dynamic类型传参,后台接收到的参数中会包含一个ValueKind的属性,包含ValueKind属性会影响取参的便捷性

导致原因:.NetCore3.0+默认的对象序列化解析程序为System.Text.Json下的JsonDocument,该解析程序解析dynamic出来的数据就会有ValueKind

解决办法(1):将默认的序列化程序System.Text.Json替换为Newtonsoft.Json
1.NuGet引入包:Microsoft.AspNetCore.Mvc.NewtonsoftJson
2.Startup添加命名空间:using Newtonsoft.Json.Serialization;
3.Startup类的ConfigureServices方法中添加代码:

//添加对象序列化程序为Newtonsoft.Json
services.AddControllers().AddNewtonsoftJson(options =>
{
	options.SerializerSettings.ContractResolver = new DefaultContractResolver();
});

JObject传参解析报错问题也可用该方式解决

解决办法(2):使用JsonConvert.DeserializeObject进行转换

dynamic dynParam = JsonConvert.DeserializeObject(Convert.ToString(param));
string strName = Conver.ToString(dynParam.Name);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值