2012-05-29 2 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?

관련 문제