浅学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 ...
随机推荐
- Aufs与Devicemapper的关系
Aufs与Devicemapper的应用 Aufs是Docker最初采用的文件系统,由于Aufs未能加入到Linux内核,考虑到兼容性问题,加入了Devicemapper的支持.目前,除少数版本如Ub ...
- BIOS开启虚拟化
启动时根据提示按del 键按 F10 键以配置 BIOS使用箭头键滚动到“System Configuration”选择“Virtualization Technology”,然后按 Enter 键选 ...
- poj 1521
http://poj.org/problem?id=1521 题意:给你一个字符串,首先是计算出一个按正常编码的编码长度,其次是计算出一个用霍夫曼编码的编码长度,最后求正常编码的长度除以霍夫曼编码长度 ...
- c++ macro
C++ Code 12345678910111213141516171819202122232425262728293031 /* version: 1.0 author: hellogise ...
- docker进入容器的方式
通过docker创建守护运行(在使用-d参数时)的容器时,容器启动后会进入后台.用户无法看到容器中的信息.某些时候如果需要进入容器进行操作,有多种方法,包括使用docker attach命令.dock ...
- Java for LeetCode 231 Power of Two
public boolean isPowerOfTwo(int n) { if(n<1) return false; while(n!=1){ if(n%2!=0) return false; ...
- CentOs7 网卡出现问题Job for network.service failed
centos7网卡是需要写入MAC地址的不然启动不了 在运行“/etc/init.d/network restart”命令时,出现错误“Job for network.service failed. ...
- Effective C++ -----条款37:绝不重新定义继承而来的缺省参数值
绝对不要重新定义一个继承而来的缺省参数值,因为缺省参数值都是静态绑定,而virtual函数-----你唯一应该覆写的东西-----却是动态绑定.
- Divide and conquer:Showstopper(POJ 3484)
Showstopper 题目大意:数据挖掘是一项很困难的事情,现在要你在一大堆数据中找出某个数重复奇数次的数(有且仅有一个),而且要你找出重复的次数. 其实我一开始是没读懂题意的...主要是我理解错o ...
- JSP公用COMMON文件
head.jsp: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" ...