zoukankan      html  css  js  c++  java
  • [Json.net]忽略不需要的字段

    摘要

    在序列化对象,总会遇到一些敏感的信息,这些信息,并不想对调用接口的用户暴露出来,又或者移动端调用接口的时候,为了不返回没用的信息占用流量,这个时候也需要把一些信息给过滤掉。

    系列文章

    [Json.net]快速入门

    [Json.net]Linq to Json

    一个例子

    namespace Json.NetDemo
    {
        class User
        {
    
            public string Name { set; get; }
    
            public string Pwd { set; get; }
    
            public DateTime Birthday { set; get; }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(JsonConvert.SerializeObject(new User { Name = "wolfy", Pwd = "12334", Birthday = DateTime.Now }));
                Console.Read();
            }
        }
    }

    User类是一个再普通不过的一个类了。这个时候有其他的client需要调用接口查找该用户的信息。这个时候如果直接把序列化的结果返回,这个时候就会把pwd字段暴露给调用方。

    Json.net有一些特性个作用在字段或者属性上面

    JsonIgnoreAttribute

    序列化的时候忽略字段或者属性

    JsonPropertyAttribute

    可以通过这个特性对字段进行重命名。

    JsonConverterAttribute

    指定序列化器。用于指派转换对象的JsonSerializer。这个特性可以修饰类或类成员。用于修饰类时,通过此特性指派的JsonConverter会被设置为序列化类的默认方式。用于修饰属性或域成员时,被指派的JsonConverter会序列化它们的值。

        class User
        {
            [JsonProperty("UserName")]
            public string Name { set; get; }
            [JsonIgnore]
            public string Pwd { set; get; }
            [JsonConverter(typeof(IsoDateTimeConverter))]
            public DateTime Birthday { set; get; }
        }

    通过上面的特性改造user类

  • 相关阅读:
    SQL常规查询详解
    WEBGL学习【二】平面图形
    WEBGL学习【一】初识WEBGL
    VS2008集成QT的OpenGL开发(实现二维图形的旋转)
    Window文件路径
    字符串转DateTime
    字符串连接
    String.Split分隔字符串
    使用对象初始值设定项初始化
    表达式树
  • 原文地址:https://www.cnblogs.com/wolf-sun/p/5714589.html
Copyright © 2011-2022 走看看