JSON数据压缩传输(一)- 无标记数组
服务端
//需要传回前端的字段
string[] fields = dto.fields.Split(','); var resluts=new List<dynamic>();
//只取前端使用的字段
//data是取到的数据
foreach (var item in data) { var obj = new System.Dynamic.ExpandoObject() as IDictionary<string, Object>; foreach (var field in fields) { obj.Add(field, item.GetType().GetProperty(field).GetValue(item)); } resluts.Add(obj); } //转为无标记数组 var resultarr=new List<dynamic>(); resultarr.Add(fields); foreach (var field in fields) { var fielsarr=new List<dynamic>(); foreach (var item in resluts) { fielsarr.Add(((IDictionary<string, Object>)item)[field]); } resultarr.Add(fielsarr); }
返回的json数组格式形如
[
[字段名1,字段名2,字段名3...],
[字段1的值1,字段1的值2,字段1的值3...],
[字段2的值1,字段2的值2...],
...
]
举个例子
[ [time,value1,value2], [00:00:01,00:00:02,00:00:03...], [1,2,3,4...] ['as','we','obj'....] ]
网页端
//无标记数组转为json var tojson=[]
//requestdata是返回的数据 for (var i = 0; i < requestdata[1].length; i++) { var jobj = {}; for (var p = 0; p < requestdata[0].length; p++) { jobj[requestdata[0][p]] = requestdata[p+1][i]; } tojson.push(jobj); }