JSON応答を解析するためのクラスを作成しました。私が抱えている問題は、1つのアイテムが配列であり、他のアイテムがオブジェクトである場合があることです。私は回避策を考え出そうとしましたが、それはいつも私に他の問題を与えることになります。
何が作成されるかを判断できるようなifまたはtryステートメントが必要です。
擬似コード...
[DataContract]
public class Devices
{
if(isArray){
[DataMember(Name = "device")]
public Device [] devicesArray { get; set; }}
else{
[DataMember(Name = "device")]
public Device devicesObject { get; set; }}
}
ダンのコードを使用して次の解決策を思いつきましたが、それを使用しようとすると、キャストの問題が発生します。「タイプ'System.Object'のオブジェクトをタイプ'MItoJSON.Device'にキャストできません」
[DataContract]
public class Devices
{
public object target;
[DataMember(Name = "device")]
public object Target
{
get { return this.target; }
set
{
this.target = value;
var array = this.target as Array;
this.TargetValues = array ?? new[] { this.target };
}
}
public Array TargetValues { get; private set; }
}