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

  

json的使用(JObect,JsonData,JArray)的更多相关文章

  1. JObject 用法 、JProperty 用法、JArray 用法 Linq 转 Json

    1.使用LINQ to JSON前,需要引用Newtonsoft.Json的dll和using Newtonsoft.Json.Linq的命名空间.LINQ to JSON主要使用到JObject, ...

  2. JSON转化为JAVABEAN集合

    String str = "[{'id':'392','type':'jpg'},{'id':'393','type':'jpg'},{'id':'377','type':'jpg'}]&q ...

  3. ASP.NET提取多层嵌套json数据的方法

    本文实例讲述了ASP.NET利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,具体例子如下. 假设需要提取的json字符串如下: {"name":&quo ...

  4. .net(c#)提取多层嵌套的JSON

    Newtonsoft.Json.Net20.dll 下载请访问http://files.cnblogs.com/hualei/Newtonsoft.Json.Net20.rar 在.net 2.0中提 ...

  5. c#多层嵌套Json

    Newtonsoft.Json.Net20.dll 下载请访问http://files.cnblogs.com/hualei/Newtonsoft.Json.Net20.rar 在.net 2.0中提 ...

  6. C#解析json的两种方式

    C#中Json转换主要使用的几种方法! 这篇主要介绍2.4.第三种方法使用的比较局限,所以我没有深入学习. 第二种方法 我使用比较多的方式,这个方法是.NET内置的,使用起来比较方便 A.利用seri ...

  7. 提取多层嵌套Json数据

    在.net 2.0中提取这样的json {"name":"lily","age":23,"addr":{"ci ...

  8. 详解ASP.NET提取多层嵌套json数据的方法

    本篇文章主要介绍了ASP.NET提取多层嵌套json数据的方法,利用第三方类库Newtonsoft.Json提取多层嵌套json数据的方法,有兴趣的可以了解一下. 本文实例讲述了ASP.NET利用第三 ...

  9. js Form表单转json格式,及后台接收(多种方法)

    转载:https://blog.csdn.net/qq_40138785/article/details/81533015 一.serialize()方法格式:var data = $("# ...

随机推荐

  1. .netcore Swagger 生成 api接口文档

    1, 引用第三方包, Swashbuckle.AspNetCore Swashbuckle.AspNetCore.Swagger Swashbuckle.AspNetCore.SwaggerUI 最简 ...

  2. Android 屏幕,语言,API版本 适配和兼容性

    Supporting Different Languages http://developer.android.com/training/basics/supporting-devices/langu ...

  3. Oracle数据库exp和imp方式导数据

    这里导入导出路径都在D盘下,默认文件名为:example.dmpexp方式导出数据相关参数项如下: 关键字  说明  默认USERID                     用户名/口令FULL   ...

  4. D - How Many Tables (并查集)(水题)

    点击打开链接 Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius want ...

  5. zTree第四章,异步加载,后端

    后端 ------------------------------------------------------------------------------------------------- ...

  6. Pangolin库的使用

    使用Pangolin画出相机的轨迹(包括朝向). 数据集结构data.csv: #timestamp, p_RS_R_x [m], p_RS_R_y [m], p_RS_R_z [m], q_RS_w ...

  7. set,env和export命令显示shell变量其区别,与环境变量扫盲(一)

    种类: ♦ set     :  用来显示本地变量,显示当前shell的变量,包括当前用户的变量 ♦ env    :  用来显示环境变量,显示当前用户的变量. ♦ export:  用来显示和设置环 ...

  8. [性能分析]linux文件描述符

    1.什么是文件和文件描述符 Linux中文件可以分为4种:普通文件.目录文件.链接文件和设备文件.1.普通文件是用户日常使用最多的文件,包括文本文件.shell脚本.二进制的可执行和各种类型的数据.l ...

  9. c++之函数形参和实参

    c++之函数形参和实参讲解 1.非地址型参数 在c++中实现模块化编程时,我们形成会遇到对自定义的函数模块传入参数的操作,即形参.这里主要讲解一个非地址型的形参. 不多说,先看代码: #include ...

  10. 关于Hibernate的一个简单小程序

    本人根据视频学习了一下三大框架中比较简单的一个Hibernate,并简单完成了一个运用Hibernate的小程序 Hibernate是一个简化web程序Dao层的一个框架,应用他,可以完全脱离sql语 ...