美文网首页软件测试
浅谈JSONObject解析JSON数据

浅谈JSONObject解析JSON数据

作者: 软件测试汪 | 来源:发表于2019-11-05 14:42 被阅读0次

    我们在做jmeter接口测试时能会用beanshell断言,一般都会将返回值转成JSONObject对象进行处理。本文选取较为复杂json格式数据,也将适用于java接口测试。

    JSON数据

    {
            "data": {
                "city": "深圳",
                "date": "2017-11-04",
                "pm25": {
                    "aqi": 0,
                    "co": 8,
                    "updatetime": "2017-11-04 13:00:00"
                },
                "daily": [
                    {
                        "date": "2017-11-04",
                        "week": "星期六",
                        "templow": "19",
                        "weather": "多云"
                    },
                    {
                        "date": "2017-11-05",
                        "week": "星期日",
                        "sunrise": "06:29",
                        "weather": "多云"
                    }
                ]
            },
            "status": 0,
            "msg": "ok"
        }
    

    解析JSON

    以下代码使用HttpClient进行接口测试,同时使用testNg进行断言

    package apitest.cases;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.HttpClientBuilder;
    import org.apache.http.util.EntityUtils;
    import org.json.JSONArray;
    import org.json.JSONObject;
    import org.testng.Assert;
    import org.testng.annotations.Test;
    
    
    import java.net.URI;
    
    public class Weather {
        @Test
        public void weather() {
            HttpClient httpClient = HttpClientBuilder.create().build();
    
    
            //执行post方法
            try {
                HttpGet httpGet = new HttpGet();
                httpGet.setURI(URI.create("http://localhost:8001/weather"));
    
                //声明一个对象来进行响应结果的存储
                HttpResponse response = httpClient.execute(httpGet);
                //获取响应结果将格式转化为Json数据
                String response2 = EntityUtils.toString(response.getEntity(), "utf-8");
                JSONObject responseJson = new JSONObject(response2);
    
                // 获取msg status
                String msg = responseJson.getString("msg");
                String status = responseJson.get("status").toString();
    
    
                // 获取data
                JSONObject jsonData = responseJson.getJSONObject("data");
    
                // 获取data里的city
                String city = jsonData.getString("city");
    
                // 获取pm25
                JSONObject pm25 = jsonData.getJSONObject("pm25");
    
                // 获取pm25里的updatetime
                String updateTime = pm25.getString("updatetime");
    
                // 获取data里的daily
                JSONArray jsonDaily = jsonData.getJSONArray("daily");
    
                // 获取data里的daily的第一组数据
                JSONObject jsonDailyFirst = jsonDaily.getJSONObject(0);
    
                // 获取data里的daily的第一组数据的date
                String date = jsonDailyFirst.getString("date");
    
    
                System.out.println("获取msg----" + msg);
                System.out.println("获取status----" + status);
                System.out.println("获取data----" + jsonData);
                System.out.println("获取data里的city----" + city);
                System.out.println("获取pm25----" + pm25);
                System.out.println("获取pm25里的updateTime----" + updateTime);
                System.out.println("获取data里的daily----" + jsonDaily);
                System.out.println("获取data里的daily的第一组数据----" + jsonDailyFirst);
                System.out.println("获取data里的daily的第一组数据的date----" + date);
    
    
                //断言
                Assert.assertEquals(msg, "ok");
            } catch (Exception e) {
                e.printStackTrace();
            }
    
        }
    }
    
    

    软件测试汪简书地址
    软件测试汪博客地址

    欢迎关注微信公众号:软件测试汪。软件测试交流群:809111560

    转载请注意出处,谢谢合作

    相关文章

      网友评论

        本文标题:浅谈JSONObject解析JSON数据

        本文链接:https://www.haomeiwen.com/subject/vmnsbctx.html