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


    将一个类序列化成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>

  • 相关阅读:
    XML和JSON两种数据交换格式的比较
    Mysql主从安装配置
    mysqldump命令之数据库迁移
    报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost
    Java Map 排序
    Jeff Dean 光辉事迹
    动态创建的link标签不会阻塞其后动态创建的script的加载与执行
    why?
    mongo find-matches value
    mongo find-in,or,and,not
  • 原文地址:https://www.cnblogs.com/macT/p/11395592.html
Copyright © 2020-2023  润新知