[Json.net]忽略不需要的字段
摘要
在序列化对象,总会遇到一些敏感的信息,这些信息,并不想对调用接口的用户暴露出来,又或者移动端调用接口的时候,为了不返回没用的信息占用流量,这个时候也需要把一些信息给过滤掉。
系列文章
一个例子
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 = "", 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类

[Json.net]忽略不需要的字段的更多相关文章
- xml 和 json 序列化忽略字段
xml 和 json 序列化忽略字段: @JsonIgnore @XmlTransient
- if(response.isSuccess){}else{}的方式,如果我们由于忽略没有设置success字段的值,就可能导致
在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个RPC接口的时候,我们一般会定义一个字段表示本次请求是否成功的. 关于这个”本次请求是否成功”的字段的定义,其实是有很多种讲 ...
- Json Serialize 忽略特定属性
Json Serialize 忽略特定属性 Json Serialize SerializeFilter 忽略特定属性 key words:Json Serialize jackson fastjso ...
- Java对象转换成Json字符串是无法获得对应字段名
问题: 代码中已经标注 @JSONField(name = "attrs") private String abc; public String getA() { return a ...
- JS推断是否为JSON对象及是否存在某字段
$.ajax({ type: 'POST', url: url, success(function(data){ //推断是否为JSON对象 if(typeof(data) == "obje ...
- Json.net 忽略实体某些属性的序列化
遇到了一个小问题有一个用户类,结构和数据库一模一样,里面包含用户密码,要向前台返回用户信息的json数据,但是不能输出密码这个字段.之前的做法是 重新又建了一个不包含这个字段的新类,然后深度复制,总感 ...
- jackson反序列化时忽略不需要的字段
有时候,如果数据库表中增加一个字段,但返回的JSON字符串中含有我们并不需要的字段,那么当对应的实体类中不含有该字段时,会抛出一个异常,告诉你有些字段没有在实体类中找到.解决办法很简单,在声明Obje ...
- jackson反序列化时忽略不需要的字段(zhuan)
http://www.cnblogs.com/davidwang456/p/5434071.html ********************************************* 有时候 ...
- Newtonsoft.Json同时对多个时间字段以不同的格式序列化
在博客园潜水多年,学到很多,也进步了很多,在这里说声谢谢,是时候给园友分享一点自己的东西,希望和大家一起进步. 之前有个需求要对一张表的多个时间字段进行不同的格式序列化, 在网上没找到相对较好的解决方 ...
随机推荐
- jsp动态include和静态Include
动态 INCLUDE 用 jsp:include 动作实现 <jsp:include page="included.jsp" flush="true" / ...
- ActiveMQ发消息和收消息
来自:http://blog.163.com/chengwei_1104/blog/static/53645274201382315625329/ ActiveMQ 是Apache出品,最流行的,能力 ...
- vmware安装ubuntu卡在install vm-tools
vmware,安装ubuntu或者centos,都有这个问题:vmware自作聪明,提示说"快速安装",然后会使用一个autoinst.iso文件来快速安装,并且装完系统后该重启了 ...
- Android成长日记-APP的签名和打包
签名的意义: 1. 为了保证每个应用程序开发者的合法 2. 防止部分人通过使用相同的Package Name来混淆替换已经安装的程序,从而出现一些恶意篡改 3. 保证我们每次发布的版本的一致性 (如自 ...
- Redis未授权访问漏洞分析
catalog . Redis简介 . 漏洞概述 . 漏洞利用方式 . 修复方式 1. Redis简介 Relevant Link: http://www.cnblogs.com/LittleHann ...
- ecshop /search.php SQL Injection Vul
catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 ECSHOP商城系统Search.php页面过滤不严导致SQL注入漏洞 ...
- oracle创建存储过程
创建: create or replace procedure insert_tbuser ( username nvarchar2,usersex nvarchar2,userage numbe ...
- As环境下添加android support library依赖库
2015年的google大会上,google发布了新的Android Support Design库的新组件之一,以此来全面支持Material Design 设计风格的UI效果,为了可以使用这些新颖 ...
- AngularJs ngHref、ngSrc、ngCopy/ngCut/ngPaste
ngHref 在Angular程序没完成改变链接上用{{hash}}方式绑定的href值的时候,当用户点击该链接会跳到一个错误的页面. 格式:ng-href=”value” value:表达式. 使用 ...
- Mac配置一些开发环境(随时补充)
Mac安装mysql并启动 brew install mysql mysql.server start /usr/local/Cellar/mysql/5.6.10/support-files/mys ...