.NET 3.5 (or the MS AJAX 1.0 library) 를 가지고 개발을 한다면,
System.Web.Script.Serialization.JavascriptSerializer 를 이용하여 JSON 형식의 데이터를 가져올 수 있습니다.
하지만.!! DataTable 과 DataSet 에 직접적인 JSON serialization 이 제공하지 않습니다. 따라서 이를 변환 처리 과정을 해야 하며, IDictionary<string, IEnumerable<IDictionary<string, object>>> 을 가지고 변환할 수 있습니다.
또한 약간의 LINQ 를 이용하여 코드 간소화를 했습니다.
|
static object RowsToDictionary(this DataTable table)
{
var columns = table.Columns.Cast<DataColumn>().ToArray();
return table.Rows.Cast<DataRow>().Select(r => columns.ToDictionary(c => c.ColumnName, c => r[c]));
}
static Dictionary<string, object> ToDictionary(this DataTable table)
{
return new Dictionary<string, object>
{
{ table.TableName, table.RowsToDictionary() }
};
}
static Dictionary<string, object> ToDictionary(this DataSet data)
{
return data.Tables.Cast<DataTable>().ToDictionary(t => t.TableName, t => t.RowsToDictionary());
}
public static string GetJSONString(DataTable table)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(table.ToDictionary());
}
public static string GetJSONString(DataSet data)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(data.ToDictionary());
}
|
위의 Json 값을 자바스크립트에서 가져와서 사용하고자 한다면 JSON 객체로 변환을 하기 위해 아래와 같이 작업을 해야 겠습니다.
var ShimObject = eval('(' + JSONString + ')');
이제 ShimObject 객체를 이용하여 for 문으로 JSON 값을 파싱하여 값을 가져오도록 하죠.
for(var i = 0; i < ShimObject .Employees.length; i++){
var val1 = ShimObject .Employees[i].EmployeeID;
var val3 = ShimObject .Employees[i].Title;
var val4 = ShimObject .Employees[i].BirthDate;
}
감사합니다.
POSTED BY 심재운(shimpark@gmail.com)