浅学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 ...
随机推荐
- Range Sum Query 2D - Mutable & Immutable
Range Sum Query 2D - Mutable Given a 2D matrix matrix, find the sum of the elements inside the recta ...
- Sharepoint2013 中想要将网站另存为模板步骤
Sharepoint2013 中想要将网站另存为模板步骤 第一步:使用SPD打开想要另存为模板的网站,找到网站选项: 第二步:点击打开网站选项,找到一个SaveSiteAsTemplateEnable ...
- robotFramework——截屏
测试执行过程中进行截屏并且保存,是任何一款自动化测试工具或者框架必备的功能.那么Robotframework如何进行截屏呢?Robotframework提供了一个“Screenshot”库. 使 ...
- html表单样式, table隔行高亮, 长字符串自动换行
2016年1月14日 11:16:54 星期四 效果图: html: <!DOCTYPE html> <html lang="en"> <head&g ...
- ABAP 单位转换函数
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE' EXPORTING input = wa_all-btg ...
- Effective C++ -----条款21:必须返回对象时,别妄想返回其reference
绝不要返回pointer或reference指向一个local stack对象,或返回reference指向一个heap-allocated对象,或返回pointer或reference指向一个loc ...
- nyoj_299_Matrix Power Series_矩阵快速幂
Matrix Power Series 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 Given a n × n matrix A and a positive i ...
- 【leetcode】Excel Sheet Column Title & Excel Sheet Column Number (easy)
Given a positive integer, return its corresponding column title as appear in an Excel sheet. For exa ...
- 【XLL 框架库函数】 debugPrintf
通过调用 Windows SDK 函数 OutputDebugStringA 在激活的调试器中输出字符串信息.如果应用程序没有调试器,那么系统调试器就会显示字符串.如果这两种调试器都没使用的话,deb ...
- 让ar执行queryall和queryrow方法返回数组
让ar执行queryall和queryrow方法返回数组 <?phpnamespace common\components;use \CActiveRecord;use \Yii;use \CD ...