通常遇到复杂类型返回值序列化之后,复杂类型里面的成员如果也是复杂的那么格式有可能是json类型或者是类似于json的键值对集合

 

 
{[
  {
    "DocId": "",
    "_ReceiptPlanId": "",
    "_Creator": "",
    "_Updator": null,
    "_Duty": null,
    "_DRDepart": "",
    "_OgrId": ""
  },
  {
    "DocId": "",
    "_ReceiptPlanId": "",
    "_Creator": "",
    "_Updator": null,
    "_Duty": null,
    "_DRDepart": "",
    "_OgrId": ""
  },
  {
    "DocId": "",
    "_ReceiptPlanId": "",
    "_Creator": "",
    "_Updator": null,
    "_Duty": null,
    "_DRDepart": "",
    "_OgrId": ""
  }
]}
JArray Foreignarray = data.result.Foreign;	
ForeignList = Foreignarray.ToObject<List<Dictionary<string,string>>>();

 

class  sss
{[
  {
    "Id": "",
    "DictId": "",
    "LangId": "",
    "DispName": "",
    "Width": 100,
    "PID": "",
    "Creator": null,
    "CreatedDate": "",
    "Deleted": false,
 
  },
  {
    "Id": "",
    "DictId": "",
    "LangId": "",
    "DispName": "",
    "Width": 100,
    "PID": "",
    "Creator": null,
    "CreatedDate": "",
    "Deleted": false,
 
  }
]}

 JArray returnResult = data.result.returnResult;
 var ssslist = returnResult.ToObject<List<sss>>();
View Code
{{
  "bbb": 
   [ 
      {    "disabled": false,    "group": null,    "selected": false,    "text": "",    "value": ""  }, 
      {    "disabled": false,    "group": null,    "selected": false,    "text": "",    "value": ""  }, 
      {    "disabled": false,    "group": null,    "selected": false,    "text": "",    "value": ""  }
   ]
   "aaa": 
   [ 
      {    "disabled": false,    "group": null,    "selected": false,    "text": "",    "value": ""  }, 
      {    "disabled": false,    "group": null,    "selected": false,    "text": "",    "value": ""  }, 
      {    "disabled": false,    "group": null,    "selected": false,    "text": "",    "value": ""  }
   ]
}}

var Foreignarray = ((Newtonsoft.Json.Linq.JObject)data.result.DropDownList);
ForeignList = Foreignarray.ToObject<Dictionary<string, List<SelectListItem>>>();
View Code
{[
  {
    "_Customer": "",
    "_CustomsType": "",
    "_ShippingType": "",
    "_InvtAttr": "",
    "_Area": "",
    "_RcptDate": null
  }
]}
JArray Foreignarray = data.result.Foreign;
var ForeignList = Foreignarray[0].ToObject<Dictionary<string, string>>();
View Code

 


 

前台  billcode= "[{"BillCOde"}:"111\n333"]"

传到后台: "[{\"BillCOde\"}:\"111\n333\"]"

JArray JarryBillCode = (JArray)JsonConvert.DeserializeObject(BillCode);

var DicBillCode = JarryBillCode[0].ToObject<Dictionary<string, string>>();

 

============================================================
当两个复杂的class结构一样 class成员一样 但是区别在一个是接口类型  一个是类的情况下
可以用JToken当做中间媒介转换
先序列化成字符串 再转成JToken 然后再通过JToken 用ToObject转换进行二者之间的相互转换

如果是类里面有类的两层参数  参数名称一定要和类名 成员名保持一致

posted on 2018-12-06 11:42  FL0528  阅读(163)  评论(0)    收藏  举报