接受第三方接口的json数据,解析转换成Javabean

这篇博客介绍了如何将第三方接口返回的json数据利用net.sf.json.JSONObject的toBean方法,转换为Java对象。示例中展示了将jsonObject转换为ContractRoot类型的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接受第三方接口返回的json数据,解析转换成Javabean 的方法。

通过 net.sf.json.JSONObject.toBean 方法转换,
ContractRoot root = (ContractRoot)net.sf.json.JSONObject.toBean(jsonObject, ContractRoot.class, classMap);

详细可参考下面例子

接受第三方接口返回的json数据,解析转换成Javabean

public class outbandUtils {
    /**
     * 接受第三方接口返回的json数据,解析转换成Javabean
     * add by linsd 20180413
     * @param jsonObject
     * @param className
     */
    public static void turnJsonTOBean(JSONObject jsonObject,String className){
        if(!jsonObject.equals(null)){
            Map<String, Object> classMap = new HashMap<String, Object>();
            classMap.put("orderItem", OrderItem.class);
            classMap.put("customer", Customer.class);
            classMap.put("accounts", Accounts.class);
            classMap.put("partyCerts", PartyCerts.class);
            classMap.put("ordProdInsts", OrdProdInsts.class);
            classMap.put("ordProdInstAttrs", OrdProdInstAttrs.class);
            classMap.put("ordServAcctRels", OrdServAcctRels.class);
            classMap.put("ordProdInstStates", OrdProdInstStates.class);
            classMap.put("mktResCardInsts", MktResCardInsts.class);
            classMap.put("mktResCardInstAttrs", MktResCardInstAttrs.class);
            classMap.put("ordProdInstRels", OrdProdInstRels.class);
            classMap.put("ordOfferInsts", OrdOfferInsts.class);
            classMap.put("ordOfferInstAttrs", OrdOfferInstAttrs.class);
            classMap.put("ordOfferProdInstRels", OrdOfferProdInstRels.class);

            //由小到大测试对应的结点是否可以成功转为 java bean
            /*if(className.equals("OrderItemContext")){
                OrderItemContext orderItemContext1 = (OrderItemContext)net.sf.json.JSONObject.toBean(jsonObject, OrderItemContext.class, classMap);
                OrderItem o = orderItemContext1.getOrderItem();
                System.out.println(o.getCustOrderId()+","+o.getOrderItemCd());
                List<PartyCerts> partyCerts = orderItemContext1.getPartyCerts();
                PartyCerts p = partyCerts.get(0);
                PartyCerts p1 = partyCerts.get(1);
                System.out.println(p.getCertAddr()+","+p.getCertNum());
                System.out.println(p1.getCertAddr()+","+p1.getCertNum());
            }
            if(className.equals("SvcConts")){
                classMap.put("customerOrder", CustomerOrder.class);
                classMap.put("orderItems", OrderItemContext.class);

                SvcCont svc = (SvcCont)net.sf.json.JSONObject.toBean(jsonObject, SvcCont.class, classMap);
                CustomerOrder custOrder = svc.getCustomerOrder();
                System.out.println(custOrder.getAcceptDate()+","+custOrder.getAcceptRegionId());

                List<OrderItemContext> orderItems = svc.getOrderItems();
                OrderItemContext context = orderItems.get(0);
                Customer customer = context.getCustomer();
                System.out.println(customer.getCustAddr()+","+customer.getCustAreaGrade());

                List<PartyCerts> partyCerts = context.getPartyCerts();
                PartyCerts p = partyCerts.get(0);
                PartyCerts p1 = partyCerts.get(1);
                System.out.println(p.getCertAddr()+","+p.getCertNum());
                System.out.println(p1.getCertAddr()+","+p1.getCertNum());
            }*/

            if(className.equals("ContractRoot")){
                classMap.put("customerOrder", CustomerOrder.class);
                classMap.put("orderItems", OrderItemContext.class);

                classMap.put("svcCont", SvcCont.class);
                classMap.put("tcpCont", TcpCont.class);
                ContractRoot root = (ContractRoot)net.sf.json.JSONObject.toBean(jsonObject, ContractRoot.class, classMap);

                SvcCont svc = root.getSvcCont();
                CustomerOrder custOrder = svc.getCustomerOrder();
                System.out.println("CustomerOrder:"+custOrder.getAcceptDate()+","+custOrder.getAcceptRegionId());

                List<OrderItemContext> orderItems = svc.getOrderItems();
                OrderItemContext context = orderItems.get(0);
                Customer customer = context.getCustomer();
                System.out.println("Customer:"+customer.getCustAddr()+","+customer.getCustAreaGrade());

                List<PartyCerts> partyCerts = context.getPartyCerts();
                PartyCerts p = partyCerts.get(0);
                PartyCerts p1 = partyCerts.get(1);
                System.out.println("PartyCerts1:"+p.getCertAddr()+","+p.getCertNum());
                System.out.println("PartyCerts2:"+p1.getCertAddr()+","+p1.getCertNum());

                TcpCont tcp = root.getTcpCont();
                System.out.println("TcpCont:"+tcp.getAppKey()+","+tcp.getCustomerOrderId());
            }
        }
    }

}

测试调用

public class Test {

    /**
     *  接受第三方接口返回的json数据,解析转换成Javabean  测试
     * @param args
     */

    public static void main(String[] args){
        OrderItem orderItem = new OrderItem();
        orderItem.setCustOrderId("001");
        orderItem.setOrderItemCd("1");
        orderItem.setOrderItemId("002");
        orderItem.setServiceOfferId("500040001");
        orderItem.setStatusDate("20180413");

        Customer cust = new Customer();
        cust.setCustAddr("CustAddr");
        cust.setCustAreaGrade("custAreaGrade");

        PartyCerts part = new PartyCerts();
        part.setCertAddr("certAddr");
        part.setCertNum("certNum");

        PartyCerts part1 = new PartyCerts();
        part1.setCertAddr("certAddr1");
        part1.setCertNum("certNum1");

        List<PartyCerts> partyCerts = new ArrayList<PartyCerts>();
        partyCerts.add(part);
        partyCerts.add(part1);

        OrderItemContext orderItemContext = new OrderItemContext();
        orderItemContext.setOrderItem(orderItem);
        orderItemContext.setCustomer(cust);
        orderItemContext.setPartyCerts(partyCerts);

        List<OrderItemContext> Oc = new ArrayList<OrderItemContext>();
        Oc.add(orderItemContext);

        CustomerOrder custorder = new CustomerOrder();
        custorder.setAcceptDate("acceptDate");
        custorder.setAcceptRegionId("acceptRegionId");

        SvcCont svc = new SvcCont();
        svc.setCustomerOrder(custorder);
        svc.setOrderItems(Oc);

        TcpCont tcp = new TcpCont();
        tcp.setAppKey("appKey");
        tcp.setCustomerOrderId("customerOrderId");

        ContractRoot root = new ContractRoot();
        root.setSvcCont(svc);
        root.setTcpCont(tcp);

        JSONObject jsonObject = null;
        jsonObject =  jsonObject.fromObject(root);

        System.out.println(jsonObject);

        outbandUtils utils = new outbandUtils();
        //如 json 数据为原始json 数据(第三方直接拿到的数据),可通过如下方法转为 JSONObject
        //net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(jsonObject);
        utils.turnJsonTOBean(jsonObject,"ContractRoot");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值