1.接收別人的消息, 報錯.

2.可以看到服務器上出錯. 根據日志我們可以定位到代碼里面,找到135行這個地方. 接收的對象不對!! 用 QueryPayReq接收報錯!!!!

3.進去這個QueryPayReq里面, 可以看到對象的屬性,找到了pay_item!!!!!!!!!!!!!!!!!!!!!!!

對方發給我的數據是一個Json數組(JsonArray) , 我接收的時候, 用了ArrayList去接收, 於是報錯!!!! 經檢查. 下面是正確的接收示范
1.首先來看下接口需求: 我請求2個參數給對方, 對方返回給我的應答參數,其中一個參數是Json數組的格式, 也就意味着,對方返回一個trans_nbr, 和返回多條pay_item , 那我該如何接收呢?

報文: 可以看到對方響應回來的參數, 格式是 trans_nbr:xxxxxxx , pay_item[{xxxxxxxxxxxxxx},{xxxxxxxxxxxxxxxx},[xxxxxxxxxxxxxxxx]]

2. 代碼接收
ResultOut resultOut = new JsonObject(body).mapTo(ResultOut.class); //報文的格式
JsonObject jsonObject = new JsonObject(resultOut.getMessage()); // 用JsonObject對象接收整個消息 String trans_nbr = jsonObject.getString("trans_nbr"); //接收第一個參數 JsonArray jsonArray = jsonObject.getJsonArray("pay_item"); //接收第二個參數jsonArray if (jsonArray.size() > 0) { //判斷jsonArray 有無 for (int i = 0; i < jsonArray.size(); i++) { //因為是一個數據(有多條), 所以需要遍歷, QueryPayOb oneJsonArray = (QueryPayOb) new JsonObject(jsonArray.getString(i)).mapTo(QueryPayOb.class); //jsonArray用實體類QueryPayOb 接收遍歷出來的參數
//可以取到參數了
String orderNo= oneJsonArray.getOrder_no();
long payAmout =oneJsonArray.getPay_amount();
........
//其他的邏輯
}
}
來個圖,更直觀

QueryPayOb 來接收pay_item數據.屬性字段與pay_item一致!

總結:
當我們不知道該怎么樣接收別人的數據時, 先將對方發來的數據,打印出來, 然后看人家是什么格式, 我們就怎么接收 !!! 要學會看報文 !!!!!!!
以及雙方的參數要一致.
當然啦~
json格式生成. 接收,如何處理, 也還需要我日后多加實踐起來.
