いいえ、これはできません。
Json.NET documentationを見てみましょう。特に、JsonPropertyAttributeクラスに関するヘルプページ。引用する
:
「は常に指定された名前のメンバーをシリアル化するJsonSerializerを指示します。」
これはNewtonsoft.Json名前空間で宣言されています。それがどのように宣言されているかを判断する必要があります。のは、CodePlexの上Json.NETのソースコードを見てみましょう:質問に答える
http://json.codeplex.com/
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property |
AttributeTargets.Parameter, AllowMultiple = false)]
public sealed class JsonPropertyAttribute : Attribute
{
//...
}
推測。属性のAllowMultipleプロパティはfalseに設定されます。したがって、この属性でプロパティ、フィールドまたはパラメータを複数回デコレートすることはできません。
どの属性を使用するかをJson.netがどのように判断することができますか?私は受け取ったJSONデータを逆シリアル化できるTwitterとFacebook用の型を別々に作成します。
ので:
Twitter -> JSON -> Twitter specific types
Facebook -> JSON -> Facebook spefic types
次に、あなたのアプリケーションではなく、直接これらの型を扱うの使用抽象化を作成します。彼らは特定のソーシャルメディアの実装に属しています。
のTwitter/Facebookの/ ... speficic種類を - >あなたのタイプ
あなたが直接あなたの「一般的なタイプ」にデータをデシリアライズしようとした場合、あなたはちょうど彼らが整列しないので、苦労し維持するつもりされています100%を受信データと一緒に使用すると、デシリアリゼーションロジックを維持するのが難しい、ファンキーなものに巻き込まれます。
独自のカスタムJson.NETコンバータを作成することもできます。
http://geekswithblogs.net/DavidHoerster/archive/2011/07/26/json.net-custom-convertersndasha-quick-tour.aspx
ただ、TwitterやFacebookのためのコンバータを作成し、あなたはJSONデータをデシリアライズするとき、ちょうどあなたが使用したいコンバータを指定します。
- TwitterConverter
- FacebookConverter
例えば:
MySocialType myType = JsonConvert.DeserializeObject<Mapped>(json,
new TwitterConverter());
とにかく私は逆シリアル化のロジック自体を使用して、クラスの種類を汚染を避けるためにしようとするだろう。
を使用することができますそれらのいずれか1つをチェックし、ヌルでないものを使用します。とにかくおかげさまで、他に何かを考え出す必要があります。どうもありがとう! :) –
私は最後のオプションがむしろうまくいくはずだと思います。 – JefClaes