2012-05-29 3 views
4

Используя отражение, я могу фильтровать участников на основе того, наследуются ли они, объявлены, общедоступны, приватны и т. Д. Есть ли способ сделать то же самое фильтрации при сериализации объекта с использованием JSon.NET?Сериализовать в JSON (используя 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)); 
} 

ответ

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?

Смежные вопросы