如何控制Json.NET系列化以使用JsonIgnore的自定义版本?

时间:2015-06-12 07:29:13

标签: c# asp.net-mvc

刚刚合并了一个类库的两个分支,我发现一个已经为模型属性添加了几个JsonIgnore属性。这些将破坏该库的Web客户端,但在该库的移动客户端中是必需的。我想创建一个新的' Json忽略'如果调用代码不是Web客户端,则仅忽略标记属性的属性。然后我想挂钩序列化代码来查看我的新属性与正常属性。

1 个答案:

答案 0 :(得分:1)

不是个好主意。我的建议是共享项目中的类(让我们称之为模型)实际上是共享的(没有属性),而在输出模型的其他项目中,您可以使用属性定义类。像这样:

//in MyProject.Core which is shared
class User
{
     public int Id { get; set; }
     public string UserName { get; set; }
     public string Password { get; set; }
}

//in MyProject.WcfApi which has wcf services for other teams
[DataContract]
class UserOutput
{
     [DataMember]
     public int Id { get; set; }
     [DataMember]
     public string UserName { get; set; }
     //no password property here
}

//in MyProject.WebApi which has some web apis for js
class UserOutput
{
    [MyJsonRelatedAttribute]
    public int Id { get; set; }    
}