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



使用反射,我能够根据成员是继承的、声明的、公共的、私有的等来过滤成员。在使用 JSon.NET 序列化对象时,有没有办法执行相同类型的过滤?

我的代码目前是:

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));
}

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

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

实现 IContract 解析器接口,然后分配 实例到 JsonSerializer 允许您控制对象是否为 序列化为 JSON 对象或 JSON 数组,应使用哪些对象成员 被序列化,它们如何序列化以及它们被称为什么。

无论如何,我在这里发现了同样的问题:使用 JSON.net,在基类上下文中使用时,如何防止序列化派生类的属性?

相关内容

  • 没有找到相关文章

最新更新