将一个类序列化成JSON或XML时,如果某个字段或属性不想被序列化,则可以使用以下Attribute:
1、[Newtonsoft.Json.JsonIgnore]特性:使用Newtonsoft.Json序列化时字段不会被序列化。
2、[System.Web.Script.Serialization.ScriptIgnore]特性:使用JavaScriptSerializer序列化时字段不会被序列化。
3、[System.Xml.Serialization.XmlIgnore]特性:字段不会被序列化成XML。
实例:将用户信息类序列化成JSON和XML格式,其中电子邮件字段不被序列化。
1、创建用户信息类
/// <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; }
}
2、实现功能
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);
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();
}
}
执行结果:
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>