1..NET对JSON的支持介绍
(1)操作Json的DLL介绍
.NET自身有System.Runtime.Serialization.dll与System.Web.Extensions.dll,使用这两个DLL可以把对象序列化和反序列化成Json数据。也可以使用第三方的Newtonsoft.Json.dll来操作Json数据,使用它会更方便的操作Json数据,其功能也跟强一些。
(2)使用System.Web.Extensions.dll的限制
要使用System.Web.Extensions.dll必须是在Web项目中,只有在Web项目中才能引用此DLL。
2.JSON序列化和反序列化
(1)使用Newtonsoft.Json.dll实现
代码示例:
得到的Json文本:
[{\"Languages\":[\"C#\",\"Java\"],\"Name\":\"李志伟\",\"Sex\":true},
{\"Languages\":[\"C#\",\"C++\"],\"Name\":\"Coder2\",\"Sex\":false},
{\"Languages\":[\"C#\",\"C++\",\"C\",\"Java\"],\"Name\":\"Coder3\",\"Sex\":true}]
注意:此种方式Json序列化对象时,只能序列化对象的公有成员。
(2)使用System.Web.Extensions.dll实现
代码示例:
{
public string Name;//姓名
public bool Sex;//性别,是否是男
public Person() { }//必须有此构造方法,否者无法反序列化
public Person(string name, bool sex)
{
this.Name = name;
this.Sex = sex;
}
public override string ToString()
{
return \"姓名:\" + this.Name + \"\\t性别:\" + (this.Sex ? \"男\" : \"女\");
}
}
public class Programmer : Person
{
public List<string> Languages;//编程语言
public Programmer() { }//必须有此构造方法,否者无法反序列化
public Programmer(string name, bool sex, List<string> languages)
: base(name, sex)
{
this.Languages = languages;
}
public override string ToString()
{
StringBuilder str = new StringBuilder();
str.Append(base.ToString() + \"\\t编程语言:\");
foreach (string l in this.Languages)
{
str.Append(l + \" \");
}
return str.ToString();
}
}
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)//Web页面的加载事件
{
List<string> languages = null;
List<Programmer> list = new List<Programmer>();
languages = new List<string>(new string[] { \"C#\", \"Java\" });
list.Add(new Programmer(\"李志伟\", true, languages));
languages = new List<string>(new string[] { \"C#\", \"C++\" });
list.Add(new Programmer(\"Coder2\", false, languages));
languages = new List<string>(new string[] { \"C#\", \"C++\", \"C\", \"Java\" });
list.Add(new Programmer(\"Coder3\", true, languages));
//序列化对象
JavaScriptSerializer jsonSerialize = new JavaScriptSerializer();
string jsonStr = jsonSerialize.Serialize(list);//将对象转换成json存储
Response.Write(jsonStr + \"<br>\");//前台输出
//反序列化对象
list.Clear();
list = jsonSerialize.Deserialize<List<Programmer>>(jsonStr);
foreach (Programmer p in list)
{
Response.Write(p + \"<br>\");//前台输出
}
}
}
本文地址:https://www.stayed.cn/item/11928
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我