2017-08-24 3 views
0

VB.Netを使用してデータを取得するサードパーティのWebサービスがあります。 Webサービスはその時点で3つの段階を経ており、XMLとしてのSOAP、次にXMLとしてのREST、そして今やJsonとしてのRESTです。認証方法をAPIキーとベアラに変更するだけでなく、Json ReturnがDeserializeObjectを使用してキャストできるようにクラス/モデルを作成する

私たちはこれらのWebサービスから投稿してデータを取得するすべてのアプリケーションを再コード化するように強制されていますが、すぐに他のすべてのメソッドをすぐに廃止します。 私たちの録音をすべて終わらせようと急いでいます。

一方の部分イム

アイブ氏は、私が作成する必要が読んで(ノードを経由してちょうど私達XMLオブジェクトとしてXML IDにと行く)コードにナビゲートすることができ、IMからにJSONを入れているとのトラブルを抱えて逆モデル化するためにJson構造にマッチするオブジェクトモデル。 (私はNewtonsoft Json.NETを使用することはできません)

以下は1つのOrderのJsonリターンですが、その配列返品につき1 -1000オーダーです。

私は自分自身を手抜きし続けますが、あなたは、仕事を終わらせるためにビルドしなければならないクラスを簡単に説明することができます! (申し訳ありませんIVEはほとんどのデータを削除しただけの文字列です(ヌルのほとんどのように)と##の数字です「」と仮定)

{ 
    "outgoingOrders": { 
    "order": [ 
     { 
     "orderType": "", 
     "orderSource": "", 
     "espOrderNo": ###, 
     "invoiceNumber": "", 
     "externalReference": "", 
     "date": "2017-08-23T23:51:02+0100", 
     "customerCompany": null, 
     "customerName": "", 
     "customerAddress1": "", 
     "customerAddress2": null, 
     "customerAddress3": null, 
     "customerCity": "", 
     "customerCounty": "", 
     "customerPostcode": "", 
     "customerCountry": "", 
     "customerEmail": "", 
     "customerTelephone": "", 
     "customerFax": null, 
     "customerReference": null, 
     "customerNotes": null, 
     "deliveryCompany": null, 
     "deliveryName": null, 
     "deliveryAddress1": null, 
     "deliveryAddress2": null, 
     "deliveryAddress3": null, 
     "deliveryCity": null, 
     "deliveryCounty": null, 
     "deliveryPostcode": null, 
     "deliveryCountry": null, 
     "deliveryTelephone": null, 
     "shippingMethod": "", 
     "shippingCost": ##.##, 
     "insurance": 0.0, 
     "discount": 0.0, 
     "voucherCode": null, 
     "orderTotal": ##.##, 
     "paymentComplete": true, 
     "payments": { 
      "payment": [ 
      { 
       "paymentMethod": "", 
       "paymentReference": "", 
       "paymentNotes": null, 
       "paymentCCDetails": null, 
       "paymentGateway": null, 
       "payPalEmail": "", 
       "payPalTransactionID": "", 
       "payPalProtectionEligibility": true, 
       "amount": ##.##, 
       "paymentDate": "2017-08-23T00:00:00+0100", 
       "paymentId": #####, 
       "postedBatchId": 0 
      } 
      ] 
     }, 
     "currencyCode": "", 
     "sellerUsername": "", 
     "sellerId": #, 
     "courierProfileName": "", 
     "buyerId": "", 
     "orderItems": { 
      "item": [ 
      { 
       "webProductID": "", 
       "stockNumber": "", 
       "itemNumber": "", 
       "productTitle": "", 
       "quantity": #, 
       "unitCost": #, 
       "taxRate": #, 
       "taxCode": null, 
       "unitCostIncludesTax": "", 
       "weight": 31000.0, 
       "productFolderName": "#", 
       "creditReason": null, 
       "customMessage1": null, 
       "customMessage2": null, 
       "customMessage3": null, 
       "locationId": ####, 
       "supplierId": ##, 
       "kitType": "", 
       "kitMaster": "", 
       "picked": false, 
       "backOrder": false 
      } 
      ] 
     }, 
     "storeId": null, 
     "shipToStore": null, 
     "orderCredits": null, 
     "orderStatus": "", 
     "flag1": "", 
     "flag2": null, 
     "courierName": "", 
     "courierService": " ", 
     "courierServiceCode": "", 
     "fulfilmentType": "", 
     "webOrderID": #####, 
     "shippingDate": "2017-08-24T11:16:51+0100", 
     "invoiceDate": "2017-08-23", 
     "tradeSale": false, 
     "courierTracking": "" 
     } 
    ] 
    },"pageContext":{"timestamp":"2017-08-24T14:02:23+0100","hasMoreEntries":false,"pageSize":1}} 
+0

コピーJSON **編集メニュー** - > **貼り付け** - > ** **クラスとしてJSONを貼り付けます。

はここにgithubのです。 [質問]を読んで[ツアー] – Plutonix

+0

"Jsonをクリップボードにコピーしてから編集メニュー - >形式を選択して貼り付け - > Jsonをクラスとして貼り付け" どのようなアプリケーションですか? 乾杯:) –

答えて

0

あなたがJSON.netを使用することはできません恥、それはこの種の作りますとても簡単です。モデル全体が問題を抱えている場合は、辞書を使用して単純化することもできます。

JSONは本質的にキーと値のペアのセットです。そのため、オブジェクトのネスト権を取得すれば、多くの場合、いくつかのディクショナリですべてを保持できます。

あなたのケースでは、 "payments"と "orderItems"にネストするとそのトリックが行われます。これがあなたを始動させるのを助けることを望みます。

+0

ディクショナリを使用するとエラーが出ますが、私はJSsonが複雑すぎるか、キーワード、つまり日付が含まれていると思いますか? 長すぎる場合に備えてシリアライザの最大長を増やしたことを確認しました。 Dim jss As New JavaScriptSerializer() jss.MaxJsonLength = 86753090 –

+0

長すぎるわけではありませんが、値のペア。例えば、 'payments'と' orderitems'はTypesです。 [質問]を読んで[ツアー]を取る@GlenRichmond – Plutonix

+0

私は入れ子の提案のおかげで試してみます.. –

0

私は個人的に、JSONリテラルを取り込んでXDocumentオブジェクトに変換するJSON-to-XDocumentモジュールを作成しました。これにより、目的のノード(おそらくプロパティを表す)を簡単に照会することができます。その後、クリップボードへhttps://github.com/dday9/.NET-JSON-Transformer

関連する問題