1. 程式人生 > >介面返回值轉成json

介面返回值轉成json

介面返回值結果轉換成JSON,具體的方法如下:

複製程式碼

public static String GetJsonValue(String result,int index,String key){
       int indexloc,indexkey;
       String newstr;
       indexloc=result.indexOf("[");
       indexkey=result.indexOf(key);
       //判斷Data域的內容
       if (( indexloc>indexkey || indexloc==-1) & index==0){
             JSONObject jsonObj = JSONObject.fromObject(result);
             return jsonObj.getString(key);
       }
       else{
             newstr=GetNPro(result,index);
             return GetJsonValue(newstr,0,key);
       }
             
}
      
      
public static String  GetNPro(String str,int n){
       Matcher slashMatcher = Pattern.compile("\\{").matcher(str);
       int mIdx = 0;
       while(slashMatcher.find()) {
            if(mIdx ==n){
                  break;
            }
            mIdx++;
       }
       str=str.substring(slashMatcher.start(),str.length());
       return str.substring(0, str.indexOf("}")+1);
}

複製程式碼

通過上面的兩個函式,我們可以將字串轉化成Json字串,並能通過關鍵字來提取對應資料。

如果要提取的資料是第一層裡面的,可以直接提取,如:GetJsonValue (jresult,0,”error”);

如果要提出的資料在data中或是更深的json中,則需要指示是第幾個資料了,資料以1開始計數,

如:GetJsonValue(jresult,2,”name”) 表示獲取第二個資料項的name欄位的值。

藉助於這兩個函式,我們可以根據Key來提取出需要的資料,進而去做我們測試用例的判斷,完成對介面的自動化測試。當然我們還可以根據自己業務的需要,去封裝獲取你需要的資料的函式,以減少工作量。

經過上面我們封裝的呼叫函式,結果處理函式,就可以通過java程式碼來完成對HTTP請求的API的呼叫,資料的獲取等功能,下面我們實踐一下:

複製程式碼

public static void main( String[] args )
    {
       // Get介面呼叫
              String url="http://api.zhongchou.cn/deal/list";
        String params="?v=1";
        String apiresult=GetRequests(url,params);
        System.out.println("errno:"+GetJsonValue(apiresult,0,"errno"));//獲取介面返回程式碼
        System.out.println("name:"+GetJsonValue(apiresult,3,"name"));//獲取第三個專案的專案名稱
       
              //Post介面呼叫
               String posturl="http://api.zhongchou.cn/user/login?v=1";
               Map map = new IdentityHashMap ();
               map.put("identity", "183****8905");       
               map.put("password", "**********"); 
               String poresult=PostRequests(posturl,map,null);
               //獲取登入的使用者帳號暱稱
            System.out.println("Name:"+GetJsonValue(poresult,1,"name"));
       }

複製程式碼