将一个类序列化成JSON或XML时,如果某个字段或属性不想被序列化,则可以使用以下Attribute:
1、[Newtonsoft.Json.JsonIgnore]特性:使用Newtonsoft.Json序列化时字段不会被序列化。
2、[System.Web.Script.Serialization.ScriptIgnore]特性:使用JavaScriptSerializer序列化时字段不会被序列化。
3、[System.Xml.Serialization.XmlIgnore]特性:字段不会被序列化成XML。
using Newtonsoft.Json; using System; using System.IO; using System.Web.Script.Serialization; using System.Xml.Serialization; namespace QRCoderTest { class Program { static void Main(string[] args) { //创建用户信息 UserInfo user = new UserInfo(); user.Name = "张三"; user.Age = 25; user.Email = "zhangsan@qq.com"; //1、使用Newtonsoft转JSON string newtonStr = JsonConvert.SerializeObject(user); //2、使用JavaScriptSerializer类转JSON JavaScriptSerializer serializer = new JavaScriptSerializer(); string serializedStr = serializer.Serialize(user); //3、XML序列化 string xmlStr = XmlSerialize<UserInfo>(user); Console.WriteLine(newtonStr); Console.WriteLine(serializedStr); Console.WriteLine(xmlStr); System.Console.ReadLine(); } //XML序列化方法 public static string XmlSerialize<T>(T obj) { using (StringWriter sw = new StringWriter()) { Type t = obj.GetType(); XmlSerializer serializer = new XmlSerializer(obj.GetType()); serializer.Serialize(sw, obj); sw.Close(); return sw.ToString(); } } } /// <summary> /// 用户信息类 /// </summary> public class UserInfo { /// <summary> /// 名称 /// </summary> public string Name { get; set; } /// <summary> /// 年龄 /// </summary> public int Age { get; set; } /// <summary> /// 电子邮件 /// </summary> [Newtonsoft.Json.JsonIgnore] [System.Web.Script.Serialization.ScriptIgnore] [System.Xml.Serialization.XmlIgnore] public string Email { get; set; } } }
执行结果:
1、使用Newtonsoft转JSON输出结果:{"Name":"张三","Age":25}
2、使用JavaScriptSerializer类转JSON输出结果:{"Name":"张三","Age":25}
3、XML序列化结果:
<?xml version="1.0" encoding="utf-16"?>
<UserInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>张三</Name>
<Age>25</Age>
</UserInfo>