1

私はモバイルエアアプリケーションを開発しています。通信には、wcfサービスを使用しています。今私の問題はこれです、私はjson.netを使用して配列の配列を逆シリアル化しようとしています。サブ配列が入力されます。したがって、モバイル側の私のクラスは次のとおりです。

package Model.VO.PHCDATA
{
    [Bindable]
    [RemoteClass(alias="Model.PCHModel.VODadosPHC")]
    public class VoBi
    {
        private var _BIstamp:String;
        private var _ivaincl:Number;
        private var _vendnm:String;
        private var _vendedor:Number;
        private var _iva:Number;
        private var _lordem:Number;
        private var _tabiva:Number;
        private var _txiva:Number;
        private var _familia:String;            
        ....

    }
}

もう1つは:

package Model.VO.PHCDATA
{
    [Bindable]
    [RemoteClass(alias="Model.PCHModel.VODadosPHC")]

    public class VOBO
    {
        private var _BOstamp:String;
        private var _vendedor:Number;
        private var _vendnm:String;

        ....
    }
}

対応するc#クラスは次のとおりです。

    [DataContract(Name = "VoBi")]
    public class VoBi
    {
        [DataMember(IsRequired = true, Name = "BIstamp", Order = 0)]
        public string BIstamp { get; set; }
        [DataMember(IsRequired = true, Name = "ivaincl", Order = 1)]
        public decimal ivaincl { get; set; }
        [DataMember(IsRequired = true, Name = "vendnm", Order = 2)]
        public string vendnm { get; set; }
        [DataMember(IsRequired = true, Name = "vendedor", Order = 3)]
        public decimal vendedor { get; set; }
                   ....

    }

そしてもう1つ:

 [DataContract(Name = "VOBO")]
    public class VOBO
    {
        [DataMember(IsRequired = true, Name = "BOstamp", Order = 0)]
        public string BOstamp { get; set; }
        [DataMember(IsRequired = true, Name = "vendedor", Order = 1)]
        public decimal vendedor { get; set; }
        [DataMember(IsRequired = true, Name = "vendnm", Order = 2)]
        public string vendnm { get; set; }
        [DataMember(IsRequired = true, Name = "nmdos", Order = 3)]
        public string nmdos { get; set; }
        [DataMember(IsRequired = true, Name = "ndos", Order = 4)]
        public decimal ndos { get; set; }

        .....

    }

サーバーに送信される対応するjson文字列は次のとおりです。

{
    "DADOSBI": [
        {
            "edebito": 0,
            "desconto": 92.121,
            "vendedor": 0,
            "desc2": 222.343,
            "iva": 23,
            "ettdeb": 123.555,
            "lordem": 12,
            "tabiva": 2.1,
           ....
        },
        {
            "edebito": 0,
            "desconto": 92.121,
            "vendedor": 1,
            "desc2": 222.343,
            "iva": 23,
            "ettdeb": 123.555,
            "lordem": 12,
            "tabiva": 2.1,
           ....
        }
    ],
    "DADOSBO": [
        {
            "estab": 123.88,
            "etotaldeb": 123,
            "obs": "",
            "vendedor": 0,
            "statuspda": "qqqqqqqqqqqq",
            "ebo_2tvall": 12,
            "ebo_2tdes1": 12.11,
            ...
        },
        {
            "estab": 123.88,
            "etotaldeb": 123,
            "obs": "",
            "vendedor": 1,
            "statuspda": "qqqqqqqqqqqq",
            "ebo_2tvall": 12,
           ....
        }
    ]
}

これをどのように処理しますか?json.net CustomCreationConverterを使用してデータを逆シリアル化しますか?そして、私が言及したクラスで満たされた対応する配列を取得しますか、それとも別のアプローチを使用しますか?助けていただければ幸いです。前もって感謝します。

4

1 に答える 1

0

あなたのトップクラスが次のように見えると仮定します(もしあなたが持っていないなら、それがより少ない努力であるならそれを作成し、そうでなければ私たちはより良い解決策をとる必要があります)

internal class TopClass
{

    [JsonProperty("DADOSBI")]
    public IList<VoBi> VOBiList { get; set; }

    [JsonProperty("DADOSBO")]
    public IList<VOBO> VOBOList { get; set; }
}

次に、を使用して単純に逆シリアル化します

var topClass = JsonConvert.DeserializeObject<TopClass>( json);

これがあなたが探している答えではない場合は、より多くの情報で質問を更新してください

于 2012-12-24T08:20:31.933 に答える