当前位置:首页 > Web开发 > 正文

stu3);strjson3 = Encoding.UTF8.GetString(stream.ToArray());

2024-07-17 Web开发

首先普及一下小常识:

JSON 和 JS 东西互转

要实现从东西转换为 JSON 字符串,使用 JSON.stringify() 要领:

var json = JSON.stringify({a: ‘Vinkong‘, b: ‘Sky‘}); //功效是 ‘{"a": "Vinkong", "b": "Sky"}‘

要实现从 JSON 转换为东西,使用 JSON.parse() 要领:

var obj = JSON.parse(‘{"a": "Vinkong", "b": "Sky"}‘); //功效是 {a: ‘Vinkong‘, b: ‘Sky‘}

  

下面是供给Demo
成立一个Student类

using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using System.Web.Script.Serialization; namespace ConsoleApplication1 { [DataContract]//DataContractJsonSerializer方法必需加的契约 class Student { private string Name; [DataMember]//DataContractJsonSerializer方法必需加的契约 [ScriptIgnore]//使用JavaScriptSerializer方法符号不序列化的属性 [JsonIgnore]//使用JSON.NET方法符号不序列化的属性 public string _Name { get { return Name; } set { Name = value; } } [DataMember] private int age; public int _Age { get { return age; } set { age = value; } } [DataMember] private string sex; public string _Sex { get { return sex; } set { sex = value; } } } }

测试代码编写:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Script.Serialization; using Newtonsoft.Json; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.IO; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { #region 第一种方法:使用JavaScriptSerializer方法 Student stu = new Student(); stu._Name = "vinkong"; stu._Age = 15; stu._Sex = ""; JavaScriptSerializer jsonSerialize = new JavaScriptSerializer(); //使用JavaScriptSerializer方法需要引入的定名空间,这个在措施集System.Web.Extensions.dll.中 //using System.Web.Script.Serialization; //注:可用[ScriptIgnore] 符号不序列化的属性 //东西序列化东西 string strjson = jsonSerialize.Serialize(stu); //Json反序列化东西 stu = jsonSerialize.Deserialize<Student>(strjson); Console.WriteLine("1.使用JavaScriptSerializer方法"); Console.WriteLine("序列化:"+strjson); Console.WriteLine("反序列化:" + stu._Name + "" + " " + "" + stu._Age + "" + " " + " " + stu._Sex + ""); #endregion #region 使用JSON.NET方法 //使用Json.NET类库需要引入的定名空间 using Newtonsoft.Json; //注:可用[JsonIgnore]符号不序列化的属性 Student stu2 = new Student(); stu2._Name = "vinkong2"; stu2._Age = 15; stu2._Sex = ""; //东西序列化Json string strjson2 = JsonConvert.SerializeObject(stu2); //Json反序列化东西 stu2 = JsonConvert.DeserializeObject<Student>(strjson2); Console.WriteLine("2.使用JSON.NET 方法"); Console.WriteLine("序列化:" + strjson2); Console.WriteLine("反序列化:" + stu2._Name + "" + " " + "" + stu2._Age + "" + " " + " " + stu2._Sex + ""); #endregion #region 使用DataContractJsonSerializer //使用DataContractJsonSerializer方法需要引入的定名空间,在System.Runtime.Serialization.dll.中。 // using System.Runtime.Serialization.Json; //实体中的契约[DataMember],[DataContract],破解qq空间访问权限 ,是使用DataContractJsonSerializer序列化和反序列化必需要加的,对付其他两种方法可加可不加。 Student stu3 = new Student(); stu3._Name = "vinkong3"; stu3._Age = 22; stu3._Sex = ""; string strjson3 = ""; //东西序列化Json using (MemoryStream stream = new MemoryStream()) { DataContractJsonSerializer jsonSerialize2 = new DataContractJsonSerializer(stu3.GetType()); jsonSerialize2.WriteObject(stream, stu3); strjson3 = Encoding.UTF8.GetString(stream.ToArray()); } //Json反序列化东西 using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(strjson3))) { DataContractJsonSerializer jsonSerialize3 = new DataContractJsonSerializer(typeof(Student)); stu3 = (Student)jsonSerialize3.ReadObject(stream); } Console.WriteLine("3.使用DataContractJsonSerializer 方法"); Console.WriteLine("序列化:" + strjson3); Console.WriteLine("反序列化:" + stu3._Name + "" + " " + "" + stu3._Age + "" + " " + " " + stu3._Sex + ""); Console.ReadKey(); #endregion } } }

尽量使用JSON.NET方法来序列化和反序列化,性能好。

.NET中JSON的序列化和反序列化的3种方法

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/27335.html