首次遭遇Json格式,缘由项目中用到Json数据,需要进行解析,为此,将Json数据转为了自己较为熟悉的DataTable格式,以此展示至DataGridView中,验证是否成功。

直接上代码:

/// <summary>
/// JSON数据转换为datatable类型数据
/// </summary>
/// <param name="strjson">JSON数据字符串</param>
/// <returns>转换为DataTable类型的JSON数据</returns>
private DataTable JSONToDataTable(string strjson)
{
DataTable dt=new DataTable();
DataColumn dc;
DataRow dr; #region 添加列
//用于添加列
JsonReader jrcolumn = new JsonTextReader(new StringReader(strjson)); bool hascolumn = false; //当前列名是否存在
while (jrcolumn.Read())
{
//判断当前值是否是字段名
if (jrcolumn.TokenType.ToString() == "PropertyName")
{
//判断当前列名是否在datatable中已存在
foreach (DataColumn column in dt.Columns)
{
if (column.ColumnName == jrcolumn.Value.ToString())
{
hascolumn = true; //存在相同名称的列
break;
}
} //存在相同列,表示全部结束
if (hascolumn == true)
{
break;
} //添加新列
dc = new DataColumn();
dc.ColumnName = jrcolumn.Value.ToString();
jrcolumn.Read();
dc.DataType = System.Type.GetType(jrcolumn.ValueType.ToString()); //列类型
dt.Columns.Add(dc);
}
}
#endregion #region 添加数据记录
//用于添加记录
JsonReader jrrow = new JsonTextReader(new StringReader(strjson)); dr = dt.NewRow();
while (jrrow.Read())
{
if (jrrow.TokenType.ToString() == "PropertyName")
{
string columnname = jrrow.Value.ToString();
jrrow.Read();
dr[columnname] = jrrow.Value.ToString();
if (columnname == dt.Columns[dt.Columns.Count - 1].ColumnName.ToString())
{
dt.Rows.Add(dr);
dr = dt.NewRow();
}
}
}
#endregion return dt;
}

析:先获取列名——json数据的字段名称,然后获取具体数据。此段代码未对一次处理,后期将进一步改进。

成功时候,又以相同方式完成将数据加到ListView中。

完整项目文件下载:华为网盘下载119网盘下载

浅学JSON——Json.NET之首次试手的更多相关文章

  1. Json.Net6.0入门学习试水篇

    原文:Json.Net6.0入门学习试水篇 前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中 ...

  2. junit浅学笔记

    JUnit是一个回归测试框架(regression testing framework).Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(Wh ...

  3. JavaScript中解析JSON --- json.js 、 json2.js 以及 json3.js的使用区别

    JSON官方(http://www.json.org/)提供了一个json.js,json.js是JSON官方提供的在JavaScript中解析JSON的js包,json.js.json2.js.js ...

  4. 【c#技术】一篇文章搞掂:Newtonsoft.Json Json.Net

    一.介绍 Json.Net是一个.Net高性能框架. 特点和好处: 1.为.Net对象和JSON之间的转换提供灵活的Json序列化器: 2.为阅读和书写JSON提供LINQ to JSON: 3.高性 ...

  5. Newtonsoft.Json(Json.Net)学习笔记

    Newtonsoft.Json 在Vs2013中就有自带的: 下面是Json序列化和反序列化的简单封装: /// <summary> /// Json帮助类 /// </summar ...

  6. Newtonsoft.Json(Json.Net)学习笔记(转)

    概述 Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库,通过Nuget获取.(查看原文) 下面是Json序列化和反序列化的简单封装: /// <summary&g ...

  7. JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List转JSON,JSON转List,JSON转C#对象

    一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...

  8. Android笔记——什么是json?json如何使用?

    什么是json 什么是json,json是什么,json如何使用 JSON是JavaScript Object Notation的缩写,可见JSON来源于JavaScript.JSON数据是一系列键值 ...

  9. Newtonsoft.Json(Json.net) 的使用

    Newtonsoft.Json(Json.net) 的使用 //Newtonsoft.Json.dll using Newtonsoft.Json; using Newtonsoft.Json.Con ...

随机推荐

  1. 写一个迷你版Smarty模板引擎,对认识模板引擎原理非常好(附代码)

    前些时间在看创智博客韩顺平的Smarty模板引擎教程,再结合自己跟李炎恢第二季开发中CMS系统写的tpl模板引擎.今天就写一个迷你版的Smarty引擎,虽然说我并没有深入分析过Smarty的源码,但是 ...

  2. How do I get ASP.NET Web API to return JSON instead of XML using Chrome

    public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Ro ...

  3. C# nullable<T> 用法小结

    今天在园子里看到一个关于C#中对于可空类型的描述的帖子,感觉不错于是自己写了个小例子尝试下. 在C#中,对于可空类型描述为:Nullable<T>, 它表示该类型是可以为空的一个类型.它被 ...

  4. Unity3d《Shader篇》绘制圆角图片

    Pass { CGPROGRAM // Upgrade NOTE: excluded shader from OpenGL ES 2.0 because it does not contain a s ...

  5. 【leetcode】Number of Islands(middle)

    Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surro ...

  6. 【hadoop2.6.0】通过代码运行程序流程

    之前跑了一下hadoop里面自带的例子,现在顺一下如何通过源代码来运行程序. 我懒得装eclipse,就全部用命令行了. 整体参考官网上的:http://hadoop.apache.org/docs/ ...

  7. 【XLL API 函数】xlGetHwnd

    返回顶层的 Excel 窗口句柄. Excel4(xlGetHwnd, LPXLOPER pxRes, 0); /* returns low part only */ Excel12(xlGetHwn ...

  8. ios NSLayoutConstraint

    为了让我们的应用在不同尺寸的屏幕下都能 “正常”的表示,我们尽量不要把数据写死.大多数可视元素都是一个矩形区域,当然这个矩形区域有坐标的,我们有了这个区域坐标就能确定可视元素的现实位置了.但是ipho ...

  9. [Android Pro] 临时关闭selinux模式 setenforce 0

    setenforce 0 设置SELinux 成为permissive模式 临时关闭selinux的

  10. Swift - 多行文本输入框(UITextView)

    1,多行文本控件的创建 1 2 3 4 let textview = UITextView(frame:CGRect(x:10, y:100, width:200, height:100)) text ...