当前位置 : 主页 > 编程语言 > c语言 >

C#中类的字段或属性不被序列化成JSON或XML

来源:互联网 收集:自由互联 发布时间:2021-06-25
将一个类序列化成JSON或XML时,如果某个字段或属性不想被序列化,则可以使用以下Attribute: 1、[Newtonsoft.Json.JsonIgnore]特性:使用Newtonsoft.Json序列化时字段不会被序列化。 2、[System.Web.

将一个类序列化成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 = "[email protected]";

            //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>

网友评论