2

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; }
    }
4

1 に答える 1

1

ターゲットプロパティをオブジェクトとして宣言します。次に、ターゲットが配列であるか単一のオブジェクトであるかを処理するヘルパープロパティを作成できます。

    private object target;

    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; }
于 2012-08-03T20:18:44.597 に答える