C#將Json解析成DateTable的方法
更新時(shí)間:2015年01月12日 09:03:21 投稿:shichen2014
這篇文章主要介紹了C#將Json解析成DateTable的方法,涉及相關(guān)格式轉(zhuǎn)換的操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
本文實(shí)例講述了C#將Json解析成DateTable的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
復(fù)制代碼 代碼如下:
#region 將 Json 解析成 DateTable ///
/// 將 Json 解析成 DateTable。
/// Json 數(shù)據(jù)格式如: ///
{table:[{column1:1,column2:2,column3:3},{column1:1,column2:2,column3:3}]}
///
///要解析的 Json 字符串
/// 返回 DateTable public DataTable JsonToDataTable(string strJson)
{
//
取出表名 var rg = new Regex(@(?<={)[^:]+(?=:[), RegexOptions.IgnoreCase);
string strName = rg.Match(strJson).Value; DataTable tb = null;
// 去除表名 strJson = strJson.Substring(strJson.IndexOf([) + 1);
strJson = strJson.Substring(0, strJson.IndexOf(]));
// 獲取數(shù)據(jù)
rg = new Regex(@(?<={)[^}]+(?=})); MatchCollection mc = rg.Matches(strJson);
for (int i = 0; i < mc.Count; i++) {
string strRow = mc[i].Value; string[] strRows = strRow.Split(',');
// 創(chuàng)建表 if (tb == null) { tb = new DataTable();
tb.TableName = strName; foreach (string str in strRows)
{ var dc = new DataColumn();
string[] strCell = str.Split(':');
dc.ColumnName = strCell[0].Replace(, );
tb.Columns.Add(dc); }
tb.AcceptChanges();
} // 增加內(nèi)容 DataRow dr = tb.NewRow();
for (int j = 0; j < strRows.Length; j++)
{ dr[j] = strRows[j].Split(':')[1].Replace(,
);
} tb.Rows.Add(dr);
tb.AcceptChanges();
}
return tb; }
#endregion
/// 將 Json 解析成 DateTable。
/// Json 數(shù)據(jù)格式如: ///
{table:[{column1:1,column2:2,column3:3},{column1:1,column2:2,column3:3}]}
///
///要解析的 Json 字符串
/// 返回 DateTable public DataTable JsonToDataTable(string strJson)
{
//
取出表名 var rg = new Regex(@(?<={)[^:]+(?=:[), RegexOptions.IgnoreCase);
string strName = rg.Match(strJson).Value; DataTable tb = null;
// 去除表名 strJson = strJson.Substring(strJson.IndexOf([) + 1);
strJson = strJson.Substring(0, strJson.IndexOf(]));
// 獲取數(shù)據(jù)
rg = new Regex(@(?<={)[^}]+(?=})); MatchCollection mc = rg.Matches(strJson);
for (int i = 0; i < mc.Count; i++) {
string strRow = mc[i].Value; string[] strRows = strRow.Split(',');
// 創(chuàng)建表 if (tb == null) { tb = new DataTable();
tb.TableName = strName; foreach (string str in strRows)
{ var dc = new DataColumn();
string[] strCell = str.Split(':');
dc.ColumnName = strCell[0].Replace(, );
tb.Columns.Add(dc); }
tb.AcceptChanges();
} // 增加內(nèi)容 DataRow dr = tb.NewRow();
for (int j = 0; j < strRows.Length; j++)
{ dr[j] = strRows[j].Split(':')[1].Replace(,
);
} tb.Rows.Add(dr);
tb.AcceptChanges();
}
return tb; }
#endregion
格式如下:
復(fù)制代碼 代碼如下:
{
table: [
{
column1: 1,
column2: 2,
column3: 3
},
{
column1: 1,
column2: 2,
column3: 3
}
]
}
table: [
{
column1: 1,
column2: 2,
column3: 3
},
{
column1: 1,
column2: 2,
column3: 3
}
]
}
例如:
復(fù)制代碼 代碼如下:
[{Code:MetaDataId,Name:MetaDataId},{Code:MetadataCode,Name:編號(hào)},{Code:SolutionName,Name:名稱}]
格式化后:
復(fù)制代碼 代碼如下:
[
{
Code: MetaDataId,
Name: MetaDataId
},
{
Code: MetadataCode,
Name: 編號(hào)
},
{
Code: SolutionName,
Name: 名稱
}
]
{
Code: MetaDataId,
Name: MetaDataId
},
{
Code: MetadataCode,
Name: 編號(hào)
},
{
Code: SolutionName,
Name: 名稱
}
]
希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:
- C#解析json文件的實(shí)現(xiàn)代碼
- asp.net(C#)解析Json的類代碼
- C#解析JSON實(shí)例
- c#版json數(shù)據(jù)解析示例分享
- C#解析json字符串總是多出雙引號(hào)的原因分析及解決辦法
- C#使用LitJson解析JSON的示例代碼
- 詳解C#對(duì)XML、JSON等格式的解析
- c#處理3種json數(shù)據(jù)的實(shí)例
- C#實(shí)現(xiàn)json的序列化和反序列化實(shí)例代碼
- C# XML與Json之間相互轉(zhuǎn)換實(shí)例詳解
- C#實(shí)現(xiàn)任意數(shù)據(jù)類型轉(zhuǎn)成json格式輸出
- C#實(shí)現(xiàn)json格式數(shù)據(jù)解析功能的方法詳解
相關(guān)文章
C# string轉(zhuǎn)換為幾種不同編碼的Byte[]的問(wèn)題解讀
這篇文章主要介紹了C# string轉(zhuǎn)換為幾種不同編碼的Byte[]的問(wèn)題解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02基于C#實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的HTTP服務(wù)器實(shí)例
這篇文章主要介紹了基于C#實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的HTTP服務(wù)器的方法,詳細(xì)分析了http服務(wù)器的實(shí)現(xiàn)原理與相關(guān)技巧,以及對(duì)應(yīng)的注意事項(xiàng),需要的朋友可以參考下2014-12-12C#中的文件路徑獲取函數(shù)和文件名字獲取函數(shù)小結(jié)
這篇文章主要介紹了C#中的文件路徑獲取函數(shù)和文件名字獲取函數(shù)小結(jié),本文講解了獲取絕對(duì)文件路徑、獲取文件名字、獲得包含 path 目錄信等內(nèi)容,需要的朋友可以參考下2015-01-01WPF ComboBox獲取當(dāng)前選擇值的實(shí)例詳解
這篇文章主要介紹了WPF ComboBox獲取當(dāng)前選擇值的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01