Heim >Web-Frontend >js-Tutorial >Eine kurze Analyse der JSON-Serialisierung und -Deserialisierung
Methode 1: Führen Sie den System.Web.Script.Serialization-Namespace ein und verwenden Sie die JavaScriptSerializer-Klasse, um eine einfache Serialisierungsklasse zu implementieren: Personnel
public class Personnel { public int Id { get; set; } public string Name { get; set; } }
Serialisierung und Deserialisierung durchführen:
protected void Page_Load(object sender, EventArgs e) { Personnel personnel = new Personnel(); personnel.Id = 1; personnel.Name = "小白"; JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); //执行序列化 string r1 = jsonSerializer.Serialize(personnel); //执行反序列化 Personnel _Personnel = jsonSerializer.Deserialize<Personnel>(r1); }
r1-Ausgabeergebnis: {"Id":1,"Name":"小白"}
Sie können das ScriptIgnore-Attribut verwenden, um zu markieren, dass öffentliche Eigenschaften oder öffentliche Felder nicht serialisiert werden sollen.
public class Personnel { [ScriptIgnore] public int Id { get; set; } public string Name { get; set; } }
r1-Ausgabeergebnis: {"Name":"小白"}
Methode 2: Führen Sie den System.Runtime.Serialization.Json-Namespace ein und verwenden Sie die DataContractJsonSerializer-Klasse, um die Serialisierung zu implementieren
Serialisierungsklasse: Personen
public class People { public int Id { get; set; } public string Name { get; set; } }
Serialisierung und Deserialisierung durchführen
protected void Page_Load(object sender, EventArgs e) { People people = new People(); people.Id = 1; people.Name = "小白"; DataContractJsonSerializer json = new DataContractJsonSerializer(people.GetType()); string szJson = ""; //序列化 using (MemoryStream stream = new MemoryStream()) { json.WriteObject(stream, people); szJson = Encoding.UTF8.GetString(stream.ToArray()); } //反序列化 using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson))) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(People)); People _people = (People)serializer.ReadObject(ms); } }
szJson-Ausgabeergebnis: {"Id":1,"Name":klein Weiß "}
Sie können IgnoreDataMember: verwenden, um anzugeben, dass das Mitglied nicht Teil des Datenvertrags ist und nicht serialisiert wird. DataMember: definiert die Parameter des Serialisierungsattributs. Dies ist erforderlich Um das DataMember-Attribut zum Markieren des Felds zu verwenden, verwenden Sie DataContract, um die Klasse zu markieren, andernfalls funktioniert die DataMember-Markierung nicht.
[DataContract] public class People { [DataMember(Name = "id")] public int Id { get; set; } [IgnoreDataMember] public string Name { get; set; } }
Ausgabeergebnis: {"id":1}
Weitere Artikel zur JSON-Serialisierung und -Deserialisierung finden Sie auf der chinesischen PHP-Website!