Newtonsoft.Json.Linq.JArray转换为List<T>

Newtonsoft.Json.Linq.JArray转换为List

环境:c# webapi

现在webapi一般使用json,从前端提交的数据,有时会包括多个数据,如:

var list = [
    {id: '1', name: 'name1'},
    {id: '2', name: 'name2'},
    {id: '3', name: 'name3'},
    {id: '4', name: 'name4'},
]
data: {
    name: 'name1',
    list: list,
    ... ...
}

在后台接口获取参数时,很多时候会使用dynamic,如:

[HttpPost]
public object SaveData(dynamic obj){}

使用dynamic作为数据类型时,获取其中的数据后需要显示的转换为相应的类型,如:

[HttpPost]
public object SaveData(dynamic obj){
    string name = obj.Name.ToString();
    int num = Convert.ToInt32(obj.Num);
}

同样的,数组类型也需要显示转换,如:
前端提交数据:

var list = [
    {id: '1', name :'name1'},
    {id: '2', name :'name2'},
    {id: '3', name :'name3'},
    {id: '4', name :'name4'}
];
$.ajax({
    url: '...',
    data: {
        ... ...
        list: list,
        ... ...
    }
})

后端接受数据:

public class Person{
    public string ID { get; set;}
    public string Name { get; set;}
}

[HttpPost]
public object SaveData(dynamic obj){
    //List<Person> list = obj.list;        报错,无法将Newtonsoft.Json.Linq.JArray隐式转换为List<T>
    List<Person> list = obj.list.ToObject<List<Person>>();    // 正确
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值