,
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>>();