c#操作json示例分享

前端技术 2023/09/05 C#

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实现

代码示例:

复制代码 代码如下:

public class Person
{
public string Name;//姓名
public bool Sex;//性别,是否是男
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(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();
}
}
class Program
{
static void Main(string[] args)
{
string filePath = @\"D:\\users\\lizw\\桌面\\ObjectJson.txt\";
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));
//序列化对象
string jsonStr = JsonConvert.SerializeObject(list);//将对象转换成json存储
File.WriteAllText(filePath, jsonStr);
list.Clear();
//反序列化对象
list = JsonConvert.DeserializeObject<List<Programmer>>(jsonStr);
foreach (Programmer p in list)
{
Console.WriteLine(p);
}
Console.WriteLine(\"OK!\");
Console.Read();
}
}

得到的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 class Person

{

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

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。