接口返回值结果转换成JSON

摘要:
如果要提取的数据是第一层里面的,可以直接提取,如:GetJsonValue;如果要提出的数据在data中或是更深的json中,则需要指示是第几个数据了,数据以1开始计数,如:GetJsonValue表示获取第二个数据项的name字段的值。借助于这两个函数,我们可以根据Key来提取出需要的数据,进而去做我们测试用例的判断,完成对接口的自动化测试。

接口返回值结果转换成JSON,具体的方法如下:

public static String GetJsonValue(String result,intindex,String key){
       intindexloc,indexkey;
       String newstr;
       indexloc=result.indexOf("[");
       indexkey=result.indexOf(key);
       //判断Data域的内容
       if (( indexloc>indexkey || indexloc==-1) & index==0){
             JSONObject jsonObj =JSONObject.fromObject(result);
             returnjsonObj.getString(key);
       }
       else{
             newstr=GetNPro(result,index);
             return GetJsonValue(newstr,0,key);
       }
}
public static String  GetNPro(String str,intn){
       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 voidmain( 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 = newIdentityHashMap ();
               map.put("identity", "183****8905");       
               map.put("password", "**********"); 
               String poresult=PostRequests(posturl,map,null);
               //获取登录的用户帐号昵称
            System.out.println("Name:"+GetJsonValue(poresult,1,"name"));
       }

免责声明:文章转载自《接口返回值结果转换成JSON》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇制作ext4 img的两种方式----转[Selenium] Selenium WebDriver 的下载和安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java 设计模式--策略模式,枚举+工厂方法实现

项目中的一个页面跳转功能存在10个以上的if else判断,想要做一下整改 一、什么是策略模式 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重If判断问题。 1.环境(Context)角色:持有一个Strategy的引用。 2.抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象...

在datasnap 中使用unidac 访问数据(服务器端)

从delphi 6 开始,datasnap 作为delphi 自带的多层框架,一直更新到最新的delphi 10.3 。同时逐步增加了很多新的功能 ,比如支持REST 调用,支持 IIS ,apache 等服务器。今天简单介绍一下如何在datasnap 中使用unidac 访问数据库。 首先,按照向导生成一个标准的datasnap 服务器。 、...

利用LDAP操作AD域

LDAP操作代码样例  初始化LDAP 目录服务上下文 该例子中,我们使用uid=linly,ou=People,dc=jsoso,dc=net这个账号,链接位于本机8389端口的LDAP服务器(ldap://localhost:8389),认证方式采用simple类型,即用户名/密码方式。 private static void initialConte...

Educational Codeforces Round 40 (Rated for Div. 2)

A. Diagonal Walking Mikhail walks on a 2D plane. He can go either up or right. You are given a sequence of Mikhail's moves. He thinks that this sequence is too long and he wants t...

C# Byte[]数组读取和写入文件

protected void ByteToString_Click(object sender, EventArgs e) { string content = this.txtContent.Text.ToString(); if (string.IsNullO...

c++11の关联容器

一、关联容器 C++的容器类型可以分为顺序容器和关联容器两大类。对于关联容器,主要有map和set,对于这两种,根据不同的维度,衍生出了8种容器 map                                      //值对 set                                         //仅有值 multimap ...