0

在我们的应用程序中,我们使用 Newtonsoft.Json 反序列化和序列化视频源对象。我们之前有 Newtonsoft.Json 3.5。一切正常。但是最近,我们将 Newtonsoft.Json.dll 升级到了 4.5,因为 TweetSharp 2.3 依赖它。这导致我们的视频提要页面返回 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 中突然停止工作?

4

1 回答 1

0

问题解决了。4.5 版有不同的方法签名。

于 2013-07-02T14:46:41.553 回答