浅学JSON——Json.NET之首次试手
首次遭遇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中。
浅学JSON——Json.NET之首次试手的更多相关文章
- Json.Net6.0入门学习试水篇
原文:Json.Net6.0入门学习试水篇 前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中 ...
- junit浅学笔记
JUnit是一个回归测试框架(regression testing framework).Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(Wh ...
- 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 ...
- 【c#技术】一篇文章搞掂:Newtonsoft.Json Json.Net
一.介绍 Json.Net是一个.Net高性能框架. 特点和好处: 1.为.Net对象和JSON之间的转换提供灵活的Json序列化器: 2.为阅读和书写JSON提供LINQ to JSON: 3.高性 ...
- Newtonsoft.Json(Json.Net)学习笔记
Newtonsoft.Json 在Vs2013中就有自带的: 下面是Json序列化和反序列化的简单封装: /// <summary> /// Json帮助类 /// </summar ...
- Newtonsoft.Json(Json.Net)学习笔记(转)
概述 Newtonsoft.Json,一款.NET中开源的Json序列化和反序列化类库,通过Nuget获取.(查看原文) 下面是Json序列化和反序列化的简单封装: /// <summary&g ...
- JSON之Asp.net MVC C#对象转JSON,DataTable转JSON,List转JSON,JSON转List,JSON转C#对象
一.JSON解析与字符串化 JSON.stringify() 序列化对象.数组或原始值 语法:JSON.stringify(o,filter,indent) o,要转换成JSON的对象.数组或原始值 ...
- Android笔记——什么是json?json如何使用?
什么是json 什么是json,json是什么,json如何使用 JSON是JavaScript Object Notation的缩写,可见JSON来源于JavaScript.JSON数据是一系列键值 ...
- Newtonsoft.Json(Json.net) 的使用
Newtonsoft.Json(Json.net) 的使用 //Newtonsoft.Json.dll using Newtonsoft.Json; using Newtonsoft.Json.Con ...
随机推荐
- sharepoint---RBS回收站清空设置
默认天数 :
- 从其它系统登录到SharePoint 2010系统的单点登录
以前做的只是使用SharePoint的单一登录,用SharePoint去登录其他的系统,现在要反过来,用Form认证的系统来登录SharePoint. 我们都知道,SharePoint使用的是域认证系 ...
- MySQL Plugin 'InnoDB' init function returned error
. . 在MySQL的配置文件中,设定default-table-type=InnoDB,发现MySQL无法正常的启动,错误日志中给出了如下的信息: 150210 18:11:19 mysqld_sa ...
- cxLookupComboBox 控件
cxLookupComboBox cxLookupComboBox1.Properties.ListSource //显示数据源 dtsTmnList cxLookupCombo ...
- java一维数组
1.通过数组名进行赋值,其实质是引用 比如数组array1和数组array2 若执行array2=array1,实际上将array1的引用传递给array2,array1和array2 最后都指向同一 ...
- gtk+-3.21.4 static build step in windows XP
In recent days the weather is very hot Unable to sleep properly Under the state of daze research gtk ...
- 复习sqldataread
public static DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader) { ///定义DataTable Data ...
- Android Studio新建了一个项目提示Error:Unable to start the daemon process
提示如下错误:
- 用Python套接字创建HTTP客户与服务器程序
最近在学习python,网络编程中,python寥寥几句,就可以创建一个服务端和客户端程序: 服务端: import sockets = socket.socket()host = socket.ge ...
- 20145206邹京儒《Java程序设计》第7周学习总结
20145206 <Java程序设计>第7周学习总结 教材学习内容总结 第十三章 时间与日期 13.1.1 时间的度量 ·即使标注为GMT(格林威治时间),实际上谈到的的是UTC(Unix ...