• json的使用(JObect,JsonData,JArray)


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

      

  • 相关阅读:
    sql分页(收藏)
    检索 COM 类工厂中 CLSID 为 {000209FF00000000C00000000, 80070005, 8000401a, asp.net生成word服务器部署, DCOM, asp.net 导出word格式的数据
    根据模板生成word文档《转》
    自动执行SQL脚本<codesmith>
    C#操作Word模板文件《收藏》
    Jquery表单验证插件《转》
    关闭文档时总是提示Normal.dot文件被占用《转》
    RepeaterItem
    NET Repeater控件使用
    文件的上传下载《转》
  • 原文地址:https://www.cnblogs.com/yyl001/p/9164626.html
Copyright © 2020-2023  润新知