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

  • 相关阅读:
    element ui 日期选择器的各种快捷选项
    vue实现带搜索的模拟下拉框组件
    前端面试100问(31-40)
    前端面试100问(22-30)
    古德-图灵估计(Good-Turing Estimate)
    拉普拉斯平滑(Laplace Smoothing)
    分类 与 聚类
    推荐系统
    文本聚类(Text clustering)
    文本分类(Text Categorization)
  • 原文地址:https://www.cnblogs.com/PinkPink/p/10518038.html
Copyright © 2020-2023  润新知