接收JsonArray出錯


 

 

 

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格式生成. 接收,如何處理, 也還需要我日后多加實踐起來.   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM