接收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格式生成. 接收,如何处理, 也还需要我日后多加实践起来.   

 

posted @ 2019-03-12 18:03  岁月尔尔  阅读(1243)  评论(0编辑  收藏  举报