json的使用(JObect,JsonData,JArray)
Posted 人生如棋,落子无悔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json的使用(JObect,JsonData,JArray)相关的知识,希望对你有一定的参考价值。
- JObect与JsonData的区别
JsonData是JObect的简化版本
2.转换过程容易出的bug
JsonData:当里面存在null就无法转换
解决方案: JsonData teamjd = JsonMapper.ToObject(FindDoctor("0",orgID).Replace(":null", ":""")); //将JsonData中的null替换为“”
JObect :转化为JObect失败
解决方案:失败原因是转化对象是数组要转换为JArray JArray jArray=JArray.Parse(str);
JObect :jArray[0]不能直接转换为JObect
解决方案:JObject jObject = jArray[0] as JObject;
JObect:当JObect对象内部存在数组无法通过Count取值
解决方案:
foreach (JToken field in jObject["data"]["doctors"])
{
if ((field["name"].ToString()).Equals(docName.Trim()))
{
doctorid = field["id"].ToString();
break;
}
}
3.判断json值为空
JObect: jb.ToString().Equals("") 若不为空就会返回jsonObect
JsonData : jd.Count==0
4.json对象的转换
JsonData :当内部存在数组
json["userFamilyHistory"] = new JsonData();
json["userFamilyHistory"].SetJsonType(JsonType.Array);
json["userFamilyHistory"].Add(userFamilyHistory);
JObect:当内部存在数组
List<JObject> listHistory = new List<JObject>();
Object other = new JObject();
...............
listHistory.Add(other);
jObject.Add(new JProperty("history", listHistory));
注意:JsonConvert.SerializeObject() 可以将类,datatable直接转化为json字符串
5.对json应用的小技巧
//根据json创建表 private void createTable(JArray jArray,string tabName) { JObject jObject = jArray[0] as JObject; //配置签约表 DataTable signTb = new DataTable(tabName); foreach(var item in jObject) signTb.Columns.Add(item.Key); foreach (JObject obj in jArray) { DataRow newrow = signTb.NewRow(); foreach (var item in obj) { newrow[ item.Key ] = item.Value; } signTb.Rows.Add(newrow); } CommonRse.ds[tabName] = signTb.Copy(); }
以上是关于json的使用(JObect,JsonData,JArray)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用`this解析C#(Windows Phone)中的JSONData。