2013-06-29 36 views
0

在我们的应用中,我们使用Newtonsoft.Json来反序列化和序列化视频提要对象。我们之前有过Newtonsoft.Json 3.5。事情运行良好。但是最近,我们将Newtonsoft.Json.dll升级到4.5,因为TweetSharp 2.3依赖于它。这导致了我们的视频输入页面返回404我缩小的问题,似乎这样的代码引起的问题DefaultContractResolver的实现导致404

JsonResult = JsonConvert.SerializeObject(
        collection, 
        Formatting.Indented, 
        new JsonSerializerSettings { ContractResolver = new GetClipContractResolver(IncludeMedia) }); 

class GetClipContractResolver : DefaultContractResolver 
    { 
     private bool IncludeMedia { get; set; } 

     public GetClipContractResolver(bool includeMedia) 
     { 
      this.IncludeMedia = includeMedia; 
     } 

     protected override JsonProperty CreateProperty(JsonObjectContract contract, System.Reflection.MemberInfo member) 
     { 

      // remove Clip.Media 
      if (member.DeclaringType == typeof(KenticoWhiteLabelCore.Core.VideoDataServiceConsumer.VideoDataClip)) 
      { 
       if (member.Name == "Media" && IncludeMedia == false) 
       { 
        return null; 
       } 
      } 

      return base.CreateProperty(contract, member); 
     } 
    } 

JsonConvert.SerializeObject工程确定,但JsonProperty CreateProperty()重写方法导致了问题。我删除它,一切正常。任何想法为什么?我们不能没有重写CreateProperty()。如何解决它的建议?为什么它会在Newtonsoft.Json 4.5中突然停止工作?

回答

0

问题已解决。版本4.5具有不同的方法签名。