擴(kuò)展方法ToJSON() and ParseJSON()
更新時間:2008年03月14日 18:50:03 作者:
AJAX編程經(jīng)常需要Object<=>JSON之間轉(zhuǎn)換,寫了二個擴(kuò)展方法:
public static string ToJSON(this object obj)
public static T ParseJSON<T>(this string str)
使用例子:
protected void Page_Load(object sender, EventArgs e)
{
Person p = new Person
{
Name = "wuchang",
Email = "wuchangx@qq.com",
LastActive = DateTime.Now,
Arr = new string[] { "arr1", "arr2" },
Lst = new List<string>( new string[] { "lst1", "lst2" } )
};
string json = p.ToJSON();
this.TextBox1.Text = json;
Person pp = json.ParseJSON<Person>();
this.TextBox2.Text = pp.ToJSON();
}
實現(xiàn)
public static class JSONExtension
{
public static string ToJSON(this object obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, obj);
return Encoding.Default.GetString(ms.ToArray());
}
}
public static T ParseJSON<T>(this string str)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(str)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
return (T)serializer.ReadObject(ms);
}
}
}
復(fù)制代碼 代碼如下:
protected void Page_Load(object sender, EventArgs e)
{
Person p = new Person
{
Name = "wuchang",
Email = "wuchangx@qq.com",
LastActive = DateTime.Now,
Arr = new string[] { "arr1", "arr2" },
Lst = new List<string>( new string[] { "lst1", "lst2" } )
};
string json = p.ToJSON();
this.TextBox1.Text = json;
Person pp = json.ParseJSON<Person>();
this.TextBox2.Text = pp.ToJSON();
}

實現(xiàn)
復(fù)制代碼 代碼如下:
public static class JSONExtension
{
public static string ToJSON(this object obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, obj);
return Encoding.Default.GetString(ms.ToArray());
}
}
public static T ParseJSON<T>(this string str)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(str)))
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
return (T)serializer.ReadObject(ms);
}
}
}
相關(guān)文章
ASP.NET中的DataGridView綁定數(shù)據(jù)和選中行刪除功能具體實例
廢話就不多說了,都說.NET是托控件的,我就托給你們看,這個博文主要講 DataGridView 的數(shù)據(jù)綁定,和選中行刪除功能2013-12-12ASP.NET設(shè)計網(wǎng)絡(luò)硬盤之查看文件夾實現(xiàn)代碼
下面要介紹的實例包括網(wǎng)上硬盤的許多功能,將一步步為大家進(jìn)行介紹。首先創(chuàng)建工程實例,然后進(jìn)行主界面的設(shè)計,最后對各個功能的實現(xiàn)分別進(jìn)行介紹2012-10-10asp.net access添加返回自遞增id的實現(xiàn)方法
今天花了一點時間研究了這個問題,除此之外,還順帶研究了小孔子cms添加數(shù)據(jù)的過程,access添加返回自遞增id也是從小孔子cms中研究出來的。2008-08-08EF使用Code First模式給實體類添加復(fù)合主鍵
這篇文章介紹了EF使用Code First模式給實體類添加復(fù)合主鍵的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03ASP.NET Core 3.0輕量級角色API控制授權(quán)庫
這篇文章介紹了ASP.NET Core 3.0輕量級角色API控制授權(quán)庫,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01asp.net StreamReader 創(chuàng)建文件的實例代碼
這篇文章介紹了asp.net StreamReader 創(chuàng)建文件的實例代碼,有需要的朋友可以參考一下2013-07-07