相关文章推荐
睿智的牛肉面  ·  python ...·  3 月前    · 
气势凌人的跑步机  ·  Frequencies of CD8 ...·  11 月前    · 
严肃的青蛙  ·  android emulator for ...·  1 年前    · 
小眼睛的火龙果  ·  <转自CSDN ...·  1 年前    · 
{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>>();    // 正确

还有例如:

//如果本地图片还存在,进行百度apk识别
                    if (fi.Exists)
                        //(3)仍然本地存在的图片,进行百度apk识别
                        string strJson = WebImageDemo(item.FullName).ToString();
                        Dictionary<string, object> dic = JsonConvert.DeserializeObject<Dictionary<string, object>>(strJson);
                        //日志Id
                        string log_id = "";
                        //返回文本数组内文本个数
                        int words_result_num = 0;
                        //文本结果是个对象数组
                        object words_result = null;
                        //申明对象数组
                        Newtonsoft.Json.Linq.JArray jarr;
                        foreach (KeyValuePair<string, object> keyValue in dic)
                            if (keyValue.Key == "log_id")
                                log_id = keyValue.Value.ToString();
                            if (keyValue.Key == "words_result_num")
                                words_result_num = Convert.ToInt32(keyValue.Value.ToString());
                            if (keyValue.Key == "words_result")
                                words_result = keyValue.Value;
                        //如果返回文本数组个数大于0,说明有值
                        if (words_result_num > 0)
                            //将对象强制转换为对象数组
                            jarr = (Newtonsoft.Json.Linq.JArray)words_result;
                            List<ApkWords> list = jarr.ToObject<List<ApkWords>>();