序列化为JSON(使用Json.Net),同时忽略继承的成员

时间:2012-05-29 15:57:38

标签: c# json serialization .net-4.0 json.net

使用反射,我能够根据成员是继承,声明,公共,私有等来过滤成员。使用JSon.NET序列化对象时是否有任何方法可以进行相同类型的过滤? p>

我的代码目前是:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

public void addRequestParameters<T>(string key, T SerializableRequestParameters)
{
    //Serialize the object
    string json = JsonConvert.SerializeObject(SerializableRequestParameters, new JsonSerializerSettings
    {
        TypeNameHandling = TypeNameHandling.All,
        ReferenceLoopHandling = ReferenceLoopHandling.Ignore
    });
    //Add it to an existing request (unrelated to this question)
    ((JObject)JSONRequest).Add(key, JToken.Parse(json));
}

1 个答案:

答案 0 :(得分:3)

我认为您可以使用自定义ContractResolver来实现目标。

  

IContractResolver接口提供了一种自定义JsonSerializer如何将.NET对象序列化和反序列化为JSON的方法。

     

实现IContractResolver接口,然后分配一个   实例到JsonSerializer允许您控制对象是否   序列化为JSON对象或JSON数组,对象成员应该是什么   被序列化,如何序列化以及它们被称为什么。

无论如何,我在这里找到了同样的问题:Using JSON.net, how do I prevent serializing properties of a derived class, when used in a base class context?