0

当属性有数据时,JsonIgnore 是否不起作用?我有以下课程:

public class SomeObject
    {
        public string Name { get; set; }
        public DateTime Created { get; set; }
        public List<string> ErrorList { get; set; }

        [JsonIgnore]
        public Dictionary<string, object> Parameters { get; set; }

        public SomeObject()
        {
            this.ErrorList = new List<string>();
            this.Parameters = new Dictionary<string, object>();
        }
    }

我的期望是 JsonIgnore 会从反序列化/序列化中排除属性。我的 RavenDB 文档有数据。我错过了什么吗?

4

1 回答 1

2

如果您使用任何 1.2(不稳定)版本,则需要JsonIgnoreAttribute使用Raven.Imports.Newtonsoft.Json. Json.Net 的所有内容都已内化。

更好的方法是不直接通过属性公开您的参数字典,因为您不希望它序列化。也许像下面这样的模式就足够了:

private readonly Dictionary<string, object> _parameters = new Dictionary<string, object>();
public Dictionary<string, object> GetParameters()
{
    return _parameters;
}

就个人而言,我尽量不将任何外部依赖项带入我的域对象,所以我喜欢避免类似的事情[JsonIgnore]

编辑

对不起,我刚刚在你的标题中看到了 960 版本。您可能会遇到不同的问题,即 960 依赖于 Json.Net 4.0.8。使用http://nuget.org/packages/RavenDB.Client/1.0.972的 972 客户端可能会更好。不过,我认为更好的建议是进行重组以完全避免需要它。

于 2012-10-21T04:53:07.563 回答