4

リフレクションを使用すると、継承、宣言、パブリック、プライベートなどに基づいてメンバーをフィルター処理できます。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));
}
4

1 に答える 1

3

ContractResolver目標を達成するためにカスタムを使用できると思います。

IContractResolver インターフェイスは、JsonSerializer が .NET オブジェクトを JSON にシリアル化および逆シリアル化する方法をカスタマイズする方法を提供します。

IContractResolver インターフェイスを実装し、インスタンスを JsonSerializer に割り当てると、オブジェクトを JSON オブジェクトまたは JSON 配列のどちらとしてシリアル化するか、どのオブジェクト メンバーをシリアル化する必要があるか、どのようにシリアル化するか、およびそれらを何と呼ぶか​​を制御できます。

とにかく、ここで同じ質問を見つけました: JSON.net を使用して、基本クラスのコンテキストで使用されたときに派生クラスのプロパティをシリアル化するのを防ぐにはどうすればよいですか?

于 2012-06-27T17:49:29.770 に答える