1. 程式人生 > >介面測試:解析JSON資料

介面測試:解析JSON資料

接著上一個教程,介面測試:傳送post請求,這次我們來分享,如何解析json資料

public static void get() throws Exception{
        responseBody = "";
        String countryCode  = "IN";
        String url = "http://10.200.10.220/dc/v1/ts";       
        String aid = "zwf0425"  ;
        String mingWen = "{\"platform\":\"android\",\"app_version\"
:\"2.0\",\"app_name\":\"com.monet.boost.max.am\",\"aid\":\""+ aid +"\",\"sdk_version\":\"1.3\"}"; String miWen = DataEn.encrypt(mingWen); responseBody = HttpRequest.sendPost(url, miWen, countryCode); //如果有響應資料,則呼叫解析資料的方法 if(responseBody !=null && responseBody != ""){
HttpRequest.jieXi(responseBody); } }

需要解析的資料【明文】如下:

{
    "trackdata": [{
    {
        "datainfo": {
            "body": "api_level=23&device_type=phone&session_count=1&app_version=2.1",
            "head": "{\"Accept-Encoding\":\"gzip\"}"
        },
        "dataType"
: "install", "offer_id": "13141772", "appid": "com.monet.boost.max.am", "dataid": "100001020010224181493112705714" }], "clickdata": [{ "offer_id": "13141772", "click": "http://pixel.webeyemob.com/v1/ad/click?subsite_id=30222&transact", "appid": "com.monet.boost.max.am", "dataid": "100001020010224181493112705714" }] }

jiexi()的方法如下:

     /**
      * 解析下發的任務
      * @param responseBody
      * @throws Exception
      */
     public static void jieXi(String responseBody) throws Exception{
            //首先需要先解密,將資料變為明文的
            String ming_responseBody = DataEn.decrypt(responseBody);
            Out.println("zming_responseBody : " + ming_responseBody);
            //將String型別轉換成JsonObject
            JSONObject jsonBody = JSONObject.fromObject(ming_responseBody); 
            //接下來的解析,需要一些json的基本知識,需要自行腦補啊*——*
            //陣列,留存任務
            JSONArray jsonArray_trackdata = jsonBody.getJSONArray("trackdata");
            int len_jsonArray_trackdata = jsonArray_trackdata.size();
            if(len_jsonArray_trackdata <= 0){
                Out.println("trackdata為空,沒有留存任務!");
            }else{
                System.out.println("有 "+len_jsonArray_trackdata+" 個留存或者安裝任務!");
                for (int i = 0; i < len_jsonArray_trackdata; i++) {
                    Out.println("dataid " + i + " :" + ((JSONObject)jsonArray_trackdata.get(i)).get("dataid"));
                    Out.println("dataType " + i + " :" + ((JSONObject)jsonArray_trackdata.get(i)).get("dataType"));
               }
            }

            //陣列,點選任務
            JSONArray jsonArray_clickdata = jsonBody.getJSONArray("clickdata");
            int len_jsonArray_clickdata = jsonArray_clickdata.size();
            if(len_jsonArray_clickdata <= 0){
                System.out.println("clickdata為空,沒有點選任務!");
            }else{
                System.out.println("有 "+len_jsonArray_clickdata+" 個點選任務!");
                for (int i = 0; i < len_jsonArray_clickdata; i++) {
                    String offer_id = ((JSONObject)jsonArray_clickdata.get(i)).get("offer_id").toString() ;
                    String data_id = ((JSONObject)jsonArray_clickdata.get(i)).get("dataid").toString() ;
                    Out.println("clickdata " + i + " :" + ((JSONObject)jsonArray_clickdata.get(i)).get("offer_id"));
                    Out.println("    appid " + i + " :" + ((JSONObject)jsonArray_clickdata.get(i)).get("appid"));
                    Out.println("    click " + i + " :" + ((JSONObject)jsonArray_clickdata.get(i)).get("click"));
                    Out.println("    dataid " + i + " :" + ((JSONObject)jsonArray_clickdata.get(i)).get("dataid"));

                }
            }

        }

解析很簡單的,難點就是需要json的相關知識。