逆シリアル化する必要がある json オブジェクトを返す API を使用しています。私の問題は、これらのオブジェクトのメンバーの 1 つが空の配列 ("[]") である場合と、辞書 ("{"1":{...}, "2":{...}}") である場合があることです。 )。ID は気にしないので、配列または辞書のいずれかにデシリアライズしたいと考えています。すべてのオブジェクトのリストが必要なだけです。オブジェクトを逆シリアル化する方法は次のとおりです。
var response = JsonConvert.DeserializeObject<Response>(json);
Response クラスの定義は次のとおりです。
public class Response
{
[JsonProperty(PropertyName = "variations")]
public Dictionary<int, Variation> Variations { get; set; }
}
Response のバリエーション フィールドに辞書が含まれている場合はうまく機能しますが、空の配列が含まれている場合は失敗します。Newtonsoft から、配列をディクショナリにデシリアライズできないというエラーが表示されます。Variations プロパティを配列として定義すると、空の配列では機能しますが、辞書の場合は失敗します。可能な値の両方を正しく逆シリアル化するか、空の配列を無視して、失敗するのではなく配列の場合に Variations を null に設定するにはどうすればよいでしょうか。
ありがとう。