2016-11-14 90 views
0

以下格式的順序數據在有效載荷中。騾有效載荷未顯示正確的數據

{ 
    "orders" : { 
     "order" : [ { 
      "id" : "4358294728", 
      "fulfillment" : { 
       "tracking_number" : "917", 
       "line-items" : { 
        "id" : "8367649608" 
       } 
      } 
     }, { 
      "id" : "4358301768", 
      "fulfillment" : { 
       "tracking_number" : "918", 
       "line-items" : [ { 
        "id" : "8367663240" 
       }, { 
        "id" : "8367663304" 
       }, { 
        "id" : "8367663368" 
       } ] 
      } 
     } ] 
    } 
} 

我想獲得總數。這個有效載荷的訂單。 我爲此使用了#[message.payload.orders.order.size()]。 它給出正確的輸出。

但對於一個訂單它給錯誤的輸出= 2,但是是1

{ 
    "orders" : { 
     "order" : { 
      "id" : "4358153416", 
      "fulfillment" : { 
       "tracking_number" : "915", 
       "line-items" : { 
        "id" : "8367362760" 
       } 
      } 
     } 
    } 
} 

能否請你幫我得到所需的輸出?

回答

0

我得到正確的數字與以下配置: -

<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/> 
    <flow name="Flow1" > 
    <http:listener config-ref="HTTP_Listener_Configuration" path="/test" doc:name="HTTP"/> 
    <json:json-to-object-transformer doc:name="JSON to Object" returnClass="java.util.HashMap"/> 
    <logger message="Order size #[message.payload.orders.order.size()] " level="INFO" doc:name="Logger"/> 
    <json:object-to-json-transformer doc:name="Object to JSON"/> 
    </flow> 

,是的,你的JSON是不正確。它應該是: -

{ 
    "orders" : { 
     "order" :[ { 
      "id" : "4358153416", 
      "fulfillment" : { 
       "tracking_number" : "915", 
       "line-items" : { 
        "id" : "8367362760" 
       } 
      } 
     }] 
    } 
} 

你已經錯過了[後order

1

我認爲問題出在你的json結構中。 在第二個:

{ 
    "orders" : { 
     "order" : { 
      "id" : "4358153416", 
      "fulfillment" : { 
       "tracking_number" : "915", 
       "line-items" : { 
        "id" : "8367362760" 
       } 
      } 
     } 
    } 
} 

order不是數組,因此它賦予「2」作爲結果,因爲它在其內部具有兩個元素:idfullfillment

你可以讓你的JSON正確生成解決這個問題,它會是這樣(檢查日「[]」):

{ 
    "orders" : { 
     "order" : [{ 
      "id" : "4358153416", 
      "fulfillment" : { 
       "tracking_number" : "915", 
       "line-items" : { 
        "id" : "8367362760" 
       } 
      } 
     }] 
    } 
} 

此外,該項目order不必是明確的。你只需要一組orders。原json應該是:

{ 
    "orders" : [ 
     { 
      "id" : "4358294728", 
      "fulfillment" : { 
       "tracking_number" : "917", 
       "line-items" : { 
        "id" : "8367649608" 
       } 
      } 
     }, 
     { 
      "id" : "4358301768", 
      "fulfillment" : { 
       "tracking_number" : "918", 
       "line-items" : [ { 
        "id" : "8367663240" 
       }, { 
        "id" : "8367663304" 
       }, { 
        "id" : "8367663368" 
       } ] 
      } 
     } 
     ] 
}