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