zoukankan      html  css  js  c++  java
  • 常见优秀工具(不定期更新)

    RestTemplate get和post简单用法:

    参考文章:https://my.oschina.net/u/2984715/blog/1805550

    近期同事项目中需要调用接口接收json格式的嵌套数据,并解析出来,发现了一个spring自带的一个工具类,用于发送参数请求并接收结果,参考上面的文章简单分享一下:

    json格式数据如下:

    {
        "analytics": {
            "VPTUGuanL": {
                "configuration": {
                    "33018Ultimate": 10,
                    "33020Deluxe": 22,
                    "33020Comfortable": 3,
                    "33018Deluxe": 5,
                    "38020Deluxe": 5,
                    "33020Custom": 18,
                    "33018Comfortable": 3,
                    "33020Ultimate ": 15,
                    "38020Ultimate": 5,
                    "33018Custom": 5,
                    "38020Exalted": 4
                },
                "appearance": {
                    "BAB": 42,
                    "DG": 41,
                    "AW": 33,
                    "IS": 40,
                    "SO": 31,
                    "MPB": 39
                },
                "interior": {
                    "EPB": 47,
                    "BAW": 29,
                    "BAWO": 34
                },
                "package": {
                    "19Hub": 10,
                    "Electric": 21,
                    "18Double": 10
                },
                "Complete": {
                    "Complete": 61
                }
            },
            "VPHuiAng": {
                "configuration": {
                    "380DE": 40,
                    "380DU": 10,
                    "480Ul": 16,
                    "380BE": 29,
                    "380Ul": 28,
                    "480DE": 16,
                    "480DU": 17
                },
                "appearance": {
                    "PB": 41,
                    "OA": 27,
                    "PS": 26,
                    "PW": 40,
                    "MRR": 23,
                    "GS": 35,
                    "VB": 39,
                    "SWB": 38
                },
                "interior": {
                    "RR": 35,
                    "MB": 53,
                    "EB": 40,
                    "TB": 31
                },
                "package": {
                    "HeadUp": 89,
                    "FullLED": 9,
                    "18Polished": 48,
                    "Driver": 63,
                    "19Aluminum": 45,
                    "BrightLED": 11,
                    "HiTech": 161,
                    "18Aluminum": 12
                },
                "Complete": {
                    "Complete": 128
                }
            },
            "VPGTS": {
                "configuration": {
                    "GTS": 4
                },
                "appearance": {
                    "BW": 27,
                    "HR": 16,
                    "WB": 19
                },
                "interior": {
                    "AB": 7
                },
                "package": {
                    "Blind": 11,
                    "Multiple": 9,
                    "Enjoy": 12,
                    "Listen": 9,
                    "FullTime": 7
                },
                "Complete": {
                    "CompleteConfiguration": 51
                }
            },
            "VPTuAng": {
                "configuration": {
                    "530EU": 5,
                    "330Ul": 12,
                    "530DE": 10,
                    "330CE": 7,
                    "380DE": 8,
                    "380CE": 5,
                    "330DE": 9,
                    "380Ul": 40,
                    "530Ul": 7
                },
                "appearance": {
                    "AR": 30,
                    "OA": 27,
                    "DG": 26,
                    "BAB": 28,
                    "AW": 32,
                    "IS": 31,
                    "VB": 25,
                    "MPB": 30
                },
                "interior": {
                    "NB": 54,
                    "TB": 61,
                    "RFR": 62
                },
                "package": {
                    "PLA": 36,
                    "6S": 17
                },
                "Complete": {
                    "Complete": 73
                }
            },
            "ExperienceEffect": {
                "VehiclePreference": {
                    "VPTuGuanL": 277,
                    "VPHuiAng": 677,
                    "VPGTS": 165,
                    "VPTuAng": 259
                },
                "Transformation": {
                    "FourthStep": 362,
                    "FirstStep": 1378,
                    "FifthStep": 313,
                    "SecondStep": 805,
                    "SixthStep": 109,
                    "ThirdStep": 496
                }
            }
        }
    }

    如果我们按照常规发送post请求接收json数据,代码有点多,用上述工具可以轻松接收!

    public void testData()
    {
    //接口地址
    String url = "http://XXXXXXXX";

    // String url = "http://IP:8080/demo/demoTest2";
    // HttpHeaders headers = new HttpHeaders();
    // headers.setContentType(MediaType.APPLICATION_JSON);
    // headers.set("phone", "123456");
    Map<String, Object> params = new HashMap<>();
    //提交的参数
    params.put("start_time", "20180824");
    params.put("end_time", "20180827");
    //所需工具类
    RestTemplate restTemplate = new RestTemplate();
    HttpEntity httpEntity = new HttpEntity(params, null);
    //postForEntity:在发送post请求时,使用该方法
    ResponseEntity<String> request = restTemplate.postForEntity(url, httpEntity, String.class);
    String firstJsonStr = request.getBody().toString();
    这样就能根据我们发送的时间请求接收到json格式的数据了,下一步,解析:我使用的是jsonObject方法循环,如有更简单的,请各位博友不吝赐教!!!
    JSONObject jsonObject = JSONObject.fromObject(firstJsonStr);
    //去除analytics层
    String secondJsonStr = jsonObject.optString("analytics");
    jsonObject = JSONObject.fromObject(secondJsonStr);

    for (Iterator<String> iterator = jsonObject.keys();iterator.hasNext();)
    {
    String key = iterator.next();
    //配置参数和最后一项数据
    String configuration_VehiclePreference = jsonObject.get(key).toString();
    JSONObject secondObject = JSONObject.fromObject(configuration_VehiclePreference);
    for(Iterator<String> secondIterator = secondObject.keys();secondIterator.hasNext();)
    {
    //最后一层json的key
    String lastJsonKey = secondIterator.next();
    //最后一层json数据
    String lastJsonStr = secondObject.get(lastJsonKey).toString();
    JSONObject thirdObject = JSONObject.fromObject(lastJsonStr);

    for(Iterator<String> thirdIterator = thirdObject.keys();thirdIterator.hasNext();)
    {
    //低层数据的key
    String detailKey = thirdIterator.next();
    //低层详细数据
    String str = thirdObject.get(detailKey).toString();
    //打印最底层的数据,如低层的数字
    System.out.println(str);
    }
    }

    }


  • 相关阅读:
    ORACLE修改列名与列类型
    ORACLE的显式游标与隐式游标
    ORACLE 异常错误处理
    ORACLE的强制索引
    看懂ORACLE执行计划
    ORACLE建立物化视图
    普通视图和物化视图的区别
    ORACLE 中 TRANSLATE的用法
    随手小代码——归并排序
    随手小代码——选择算法排序
  • 原文地址:https://www.cnblogs.com/yuxifly828/p/9682599.html
Copyright © 2011-2022 走看看