기억/C#

[ASP.NET]DataSet,DataTable을 JSON으로 변환하기

Shift Key 2021. 3. 10. 09:24
728x90
반응형

asp.net을 하면서 json을 쓸 일이 많아졌습니다.

 

언제나 그랬듯 서론은 짧게, 본론으로 갑니다~

#region DataSet -> Json String
public static string DataSetToJson(DataSet ds)
{
	System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
	serializer.MaxJsonLength = 2147483647;
	Dictionary<string, List<Dictionary<string, object>>> dsList = new Dictionary<string, List<Dictionary<string, object>>>();
	List<Dictionary<string, object>> rows;
	Dictionary<string, object> row;
	foreach (DataTable dt in ds.Tables)
	{
		rows = new List<Dictionary<string, object>>();
		foreach (DataRow dr in dt.Rows)
		{
			row = new Dictionary<string, object>();
			foreach (DataColumn col in dt.Columns)
			{
				row.Add(col.ColumnName, dr[col]);
			}
			rows.Add(row);
		}
		dsList.Add(dt.TableName, rows);
	}
	return serializer.Serialize(dsList);
}
#endregion

 

#region DataTable -> Json String
public static string DataTableToJson(DataTable ds)
{
	System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
	serializer.MaxJsonLength = 2147483647;
	List<Dictionary<string, object>> listRows = new List<Dictionary<string, object>>();
	Dictionary<string, object> row;
	foreach (DataRow dr in ds.Rows)
	{
		row = new Dictionary<string, object>();
		foreach (DataColumn col in ds.Columns)
		{
			row.Add(col.ColumnName, dr[col]);
		}
		listRows.Add(row);
	}
	return serializer.Serialize(listRows);
}
#endregion

 

* DataSet, DataTable 이 비어있는지 체크를 합시다

 

DataSet의 Table[0]에는 다음과 같은 데이터가 들어가있습니다

 

2번의 foreach를 통과하면 rows에는 다음과 같은 데이터가 만들어집니다.

 

string a_sJson에는 다음과 같은 값이 들어가집니다

 

그리고 이 a_sJson을 Client side로 갖고 가서 사용할 땐

const obj_json = JSON.parse(a_sJson);

하면 됩니다

 

끗-

728x90
반응형