zoukankan      html  css  js  c++  java
  • Json.net 忽略实体某些属性的序列化

    Json.net 忽略实体某些属性的序列化
    遇到了一个小问题
    有一个用户类,结构和数据库一模一样,里面包含用户密码,要向前台返回用户信息的json数据,但是不能输出密码这个字段。
    之前的做法是 重新又建了一个不包含这个字段的新类,然后深度复制,总感觉这中方式有点笨拙。受人启发么,想起来json.net中有一个
    
    能控制被序列化为一个json对象中的属性的特性,就找找有没有能屏蔽实体属性的特性
    
    果然
    
    复制代码
    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    namespace ConsoleApplication1
    {
        [JsonObject(MemberSerialization.OptIn)]
        public class User
        {
            [JsonProperty(PropertyName = "ID")]
            public int Unid { get; set; }
    
            [JsonProperty]
            public string UserName { get; set; }
    
            [JsonProperty]
            [JsonConverter(typeof(IsoDateTimeConverter))]
            public DateTime CreateTime { get; set; }
    
            [JsonIgnoreAttribute]
            public string PasssWord { get; set; }
    
            public string Memo { get; set; }
        }
    }
    复制代码
    附带解释
    
    JsonObjectAttribute
    
    这个标签的成员序列化标志指定成员序列化是opt-in(要序列化的成员必须带有JsonProperty或DataMember标签)还是opt-out(默认所有的都会序列化,但通过JsonIgnoreAttribute标签可以忽略序列化。opt-out是json.net默认的)。
    
     
    
    JsonPropertyAttribute
    
    允许被序列化的成员自定义名字。这个标签同时标示出:在成员序列化设置为opt-in的时候,成员会被序列化。
    
     
    
    JsonIgnoreAttribute
    
    忽略域或属性的序列化
    
     
    
    JsonConverterAttribute
    
    用于指派转换对象的JsonSerializer。
    
    这个标签可以修饰类或类成员。用于修饰类时,通过此标签指派的JsonConverter会被设置为序列化类的默认方式。用于修饰属性或域成员时,被指派的JsonConverter会序列化它们的值



     [XmlIgnore]
    忽略xml 序列化
  • 相关阅读:
    SuSE上运行MyCat(二):配置单点MyCat
    mysql笔记系列(七)唯一索引和普通索引的性能区别
    LINUX中LS对文件进行按大小排序和按时间排序,设置LS时间格式
    Linux下查看网关方法:
    linux
    Linux ip命令详解
    suse下设置IP的3种方法
    linux配置虚拟IP--VIP
    chroot的用法
    91家纺网,十次更新
  • 原文地址:https://www.cnblogs.com/profession/p/9095569.html
Copyright © 2011-2022 走看看