json的使用(JObect,JsonData,JArray)

本文介绍了JObect与JsonData两种JSON处理方式的区别及常见问题解决方法,包括转换过程中的bug处理、判断json值为空的方法、对象转换技巧等,并提供了一个根据json创建表格的具体示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 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();
}

  

转载于:https://www.cnblogs.com/yyl001/p/9164626.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值