在我们的应用程序中,我们使用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中突然停止工作?
答案 0 :(得分:0)
问题解决了。版本4.5具有不同的方法签名。