C#中把DataTable、Dataset轉Json數(shù)據(jù)
什么是JSON
JSON是JavaScript Object Notation的簡稱,中文含義為“JavaScript 對象表示法”,它是一種數(shù)據(jù)交換的文本格式,而不是一種編程語言。
JSON 是一種輕量級的數(shù)據(jù)交換格式,它基于 ECMAScript (w3c制定的js規(guī)范)的一個子集,采用完全獨立于編程語言的文本格式來存儲和表示數(shù)據(jù)。簡潔和清晰的層次結構使得 JSON 成為理想的數(shù)據(jù)交換語言。易于人閱讀和編寫,同時也易于機器解析和生成,并有效地提升網絡傳輸效率。
JSON的特點
JSON 主要具有以下特性,這些特性使它成為理想的數(shù)據(jù)交換語言:
- JSON 是輕量級的文本數(shù)據(jù)交換格式
- JSON 具有自我描述性,更易理解
- JSON 采用完全獨立于語言的文本格式:JSON 使用 JavaScript 語法來描述數(shù)據(jù)對象,但是 JSON 仍然獨立于語言和平臺。JSON 解析器和 JSON 庫支持許多不同的編程語言。 目前常見的動態(tài)編程語言(PHP,JSP,.NET)都支持JSON。
- JSON 是存儲和交換文本信息的一種語法,它與XML具有相同的特性,是一種數(shù)據(jù)存儲格式,卻比 XML 更小、更快、 更易于人編寫和閱讀、更易于生成和解析。
類似于 XML 的特性:
- JSON 是純文本
- JSON 具有“自我描述性”(人類可讀)
- JSON 具有層級結構(值中存在值)
- JSON 可通過 JavaScript 進行解析
- JSON 數(shù)據(jù)可使用 AJAX 進行傳輸
相比 XML 的不同之處:
- 沒有結束標簽
- 更短
- 讀寫的速度更快
- 能夠使用內建的 JavaScript eval() 方法進行解析
- 使用數(shù)組
- 不使用保留字
DataTable轉Json
public static string DataTableToJson1(string jsonName, DataTable dt)
{
StringBuilder Json = new StringBuilder();
Json.Append("{\"" + jsonName + "\":[");
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
Json.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + dt.Rows[i][j].ToString() + "\"");
if (j < dt.Columns.Count - 1)
{
Json.Append(",");
}
}
Json.Append("}");
if (i < dt.Rows.Count - 1)
{
Json.Append(",");
}
}
}
Json.Append("]}");
return Json.ToString();
}Dataset轉Json
主方法
public static string Dataset2Json(DataSet ds)
{
StringBuilder json = new StringBuilder();
foreach (DataTable dt in ds.Tables)
{
json.Append("{\"");
json.Append(dt.TableName);
json.Append("\":");
json.Append(DataTable2Json(dt));
json.Append("}");
} return json.ToString();
}調用方法
public static string DataTableToJson2(DataTable dt)
{
StringBuilder Json = new StringBuilder();
Json.Append("{\"" + dt.TableName + "\":[");
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
Json.Append("\r\n" + "{\"device\":" + "\r\n" + "{");
for (int j = 0; j < dt.Columns.Count; j++)
{
string columName = dt.Columns[j].ColumnName.ToString();
string columValue = dt.Rows[i][j].ToString();
if (j == 9)//"radios":{"wifiMAC":~~},
Json.Append("\"radios\":{\"" + columName + "\":\"" + columValue + "\"}");
else if (j == 10 || j == 11)//"partDetails":{"mainLogicBoardSerialNumber":~~, "batterySerialNumber":~~ }
{
if (j == 10)
Json.Append("\"partDetails\":{\"" + columName + "\":\"" + columValue + "\"");
else
Json.Append("\"" + columName + "\":\"" + columValue + "\"}}");
}
else if (j == 12)
Json.Append("\"order\":{\"" + columName + "\":\"" + columValue + "\"");
else if (j == 16)
Json.Append("\"" + columName + "\":\"" + columValue + "\"}");
else
Json.Append("\"" + columName + "\":\"" + columValue + "\"");
if (j < dt.Columns.Count - 1 )
Json.Append(",");
}
Json.Append("}");
if (i < dt.Rows.Count - 1)
{
Json.Append(",");
}
}
}
Json.Append("\r\n" + "]}");
return Json.ToString();
}到此這篇關于C#中把DataTable、Dataset轉Json數(shù)據(jù)的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
WPF中使用CallerMemberName簡化InotifyPropertyChanged的實現(xiàn)
這篇文章介紹了WPF中使用CallerMemberName簡化InotifyPropertyChanged的實現(xiàn),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-06-06

