c# - 配置 JSON.NET 以忽略 DataContract/DataMember 属性

我们在使用 Microsoft JSON 序列化程序和 JSON.NET 的 MVC3 项目中遇到了情况。

每个人都知道微软的序列化器中的 DateTime 基本上被破坏了,所以我们切换到 JSON.NET 来避免这个问题。这很好用,除了我们尝试序列化的一些类是具有 DataContract/DataMember 属性的 POCO。它们是在一个在多个位置引用的程序集中定义的。此外,它们还有一些其他显示属性未标记为 DataMembers 以提高效率。例如,客户

[DataContract]
public class Customer
{
   [DataMember]
   public string FirstName { get; set;}
   [DataMember]
   public string LastName { get; set;}
   public string FullName 
   {
       get
       {  return FirstName + " " + LastName; }
   }

}

当此客户通过 WCF 传递时,客户端可以引用该程序集并使用 FullName 就好了,但是当使用 JSON.NET 序列化时,它会发现 FullName 不是 [DataMember] 并且不序列化它。是否有一个选项可以传递给 JSON.NET 来告诉它忽略一个类应用了 [DataContract] 属性的事实?

注意: 在 .NET 中使用 JavaScriptSerializer 可以很好地用于 FullName 属性,但 DateTimes 已损坏。我需要 JSON.NET 来忽略此类具有 DataContract/DataMember 属性的事实,并且只执行标准的公共(public)字段序列化,就像它们不存在时一样。

最佳答案

只需使用 Json.Net 的 OptOut 属性。它将优先于 DataContract。

[DataContract]
[JsonObject(MemberSerialization.OptOut)]

https://stackoverflow.com/questions/11055225/

相关文章:

java - 可以将 Jackson 配置为从所有字符串属性中修剪前导/尾随空格吗?

asp.net-mvc - 如何从 MVC Controller 返回 Json 对象以查看

json - Jackson JSON Marshall 忽略 getter

python - Django: "TypeError: [] is not JSON serial

iOS - 在 swift 中使用 ObjectMapper 映射根 JSON 数组

json - 简单、安全的 API 认证系统

jquery - AJAX 将 JavaScript 字符串数组发布到 JsonResult 作为

javascript - 如何转换为 D3 的 JSON 格式?

php - 使用 json_encode() 时删除数组索引引用

javascript - js 中奇怪的 JSON 解析行为, "Unexpected token