2016-11-10 3 views
1

APIをHTTP POST要求を生成するためにXMLをJSONに変換しようとしています。フィールドの1つが文字列ではなく整数であるため、エラーが発生します。私が読んだことから、 "json:Integer =" true ""をノードに追加するとintになるが、これは私のために働いているようだ。ここにxmlとその結果のjsonがあります。配列は機能していますが、整数はそうではありません。XMLをJSONに変換するときにC#を整数にする

<shipments json:Array="true" xmlns:json="http://james.newtonking.com/projects/json"> 
    <shipment_tracking_number /> 
    <response_shipment_date>2016-10-18T01:00:00.0000000-04:00</response_shipment_date> 
    <response_shipment_method>UPS Ground</response_shipment_method> 
    <expected_delivery_date>2016-10-18T01:00:00.0000000-04:00</expected_delivery_date> 
    <ship_from_zip_code>12345</ship_from_zip_code> 
    <carrier_pick_up_date>2016-10-18T01:00:00.0000000-04:00</carrier_pick_up_date> 
    <carrier>UPS</carrier> 
    <shipment_items json:Array="true"> 
     <shipment_item_id>FF12345K</shipment_item_id> 
     <alt_shipment_item_id>1234567890</alt_shipment_item_id> 
     <merchant_sku>B00xxxx</merchant_sku> 
     <response_shipment_sku_quantity json:Integer="true">1</response_shipment_sku_quantity> 
    </shipment_items> 
</shipments> 

列jsonrequest = JsonConvert.SerializeXmlNode(DOC、 Newtonsoft.Json.Formatting.None、TRUE)。

{"shipments":[ 
    { 
     "shipment_tracking_number":null, 
     "response_shipment_date":"2016-10-18T01:00:00.0000000-04:00", 
     "response_shipment_method":"UPS Ground", 
     "expected_delivery_date":"2016-10-18T01:00:00.0000000-04:00", 
     "ship_from_zip_code":"12345", 
     "carrier_pick_up_date":"2016-10-18T01:00:00.0000000-04:00", 
     "carrier":"UPS", 
     "shipment_items":[ 
     { 
      "shipment_item_id":"FF12345K", 
      "alt_shipment_item_id":"1234567890", 
      "merchant_sku":"B00xxxx", 
      "response_shipment_sku_quantity":"1" 
     }] 
    }] 
} 

私は"response_shipment_sku_quantity":1として表示する"response_shipment_sku_quantity":"1"を必要とするが、それが働いているように見えるdoes notの。変換を実行するXMLまたはコードを変更できます。これができる限り、私は気にしません。

+0

[Json値をNewtonsoftでIntegerに変換する]で説明した「forked」バージョンの「XmlNodeConverter」を使用していますか(https://stackoverflow.com/questions/29909328/convert-a-json-value-to- integer-with-newtonsoft)? – dbc

答えて

0

属性を誤って定義しています。これはどのように見えるかです。

<response_shipment_sku_quantity json:Type='Integer'>1</response_shipment_sku_quantity> 

EDIT:

Newtonsoft.Json XmlNodeConverter

ルック方法private void SerializeNodeと、彼らはこの定義を提案string dataType = GetDataType(node);

別のオプションはJsonにそれをプロパティのための適切なタイプでclassxmlDeserializeし、その後Serializeすることです。

+0

私はこれをxmlファイルのノードに入れて実行しようとしましたが、何の影響もないようです。残念ながら、ファイル自体に配列コードを追加する機能はありません。私は同じ名前のノードが1つしかないかどうかを調べるコードを書いています。そうであれば配列属性を追加します。これは何とかそれを上書きすることができますか?上のサンプルはdoc.innerxmlから取得したxmlですので、これは私のコードが業務を完了した後です –

+0

@DanHastingsあなたは私の編集をチェックしてソースコードを見ることができます。 – mybirthname

関連する問題