当前位置: 首页 > 知识库问答 >
问题:

请放心:json响应的大小

郭翰翮
2023-03-14

我是新来的,请放心。我尝试了下面的代码来获得响应

@Test
    public void getData() throws IOException {
         Response response = 
                    given().
                        header("authToken",userToken).
                    when().
                        get("/students").
                    then().
                        contentType(ContentType.JSON).
                    extract().
                        response(); 
                    String jsonStr = response.getBody().asString();
                    System.out.println("Tag List************************" + jsonStr);

        }

这是json响应

{"max":"20","list":[
{"id":1120,"sId":1120,"sIntId":"150","type":1},
{"id":1121,"sId":1121,"sIntId":"151","type":1}
{"id":1122,"sId":1122,"sIntId":"152","type":1}
{"id":1123,"sId":1123,"sIntId":"153","type":1}
{"id":1124,"sId":1124,"sIntId":"154","type":1}]}

如何计算id或列表的大小。帮助我。

共有2个答案

左恺
2023-03-14

如果只计算列表的大小,也许您可以:

public static void main(String[] args) {
    System.out.println(count(jsonStr, "\"id\""));
}

public static int count(String source, String sub) {
    int count = 0;

    for (int i = 0; (i = source.indexOf(sub, i)) != -1; i += sub.length()) {
        ++count;
    }

    return count;

}

或正则表达式:

public static int countByRegex(String source, String pattern) {
    Pattern p = Pattern.compile(pattern);
    Matcher matcher = p.matcher(source);

    int count = 0;
    while(matcher.find())
        count++;
    return count;
}
System.out.println(countByRegex(str, "id"));
夹谷鸿福
2023-03-14

您不必提取响应来验证这一点。你可以这样做:

given().
       header("authToken",userToken).
when().
       get("/students").
then().
       contentType(ContentType.JSON).
       body("list.size()", is(5));

但是如果你想从回答中提取它,你也可以:

Response response = 
given().
       header("authToken",userToken).
when().
       get("/students").
then().
       contentType(ContentType.JSON).
extract().
       response(); 
int sizeOfList = response.body().path("list.size()");

如果您只对列表的大小感兴趣,而对其他什么都不感兴趣,您可以这样做:

int sizeOfList = 
given().
       header("authToken",userToken).
when().
       get("/students").
then().
       contentType(ContentType.JSON).
extract().
       path("list.size()"); 
 类似资料:
  • 我的JSON响应如下所示: 我正在尝试提取成功消息和数据。但是,我的控制台输出保持为null。 提取响应后,我的代码将使用Rest Assured接收空响应: 我对成功和数据的响应均为空

  • 我想解析我的JSON响应来验证我获得的响应。 现在,我正在为此使用Rest-放心java API,我通过了关于工具QA和他们正在使用的教程 对于Json:- 现在这个响应是一个JSON对象。但我的嵌套在JSON数组中。 如何解析这些嵌套的Json对象和数组?因为Json响应可以出现在数组和对象的所有组合中。 它们是提供与键相对应的值的可靠方法吗?例:“key”:“value”我去找key,通过那个

  • 我使用的是REST-保证库,我在访问下面JSON响应中的一个特定的键时遇到了一个非常奇怪的问题,这是我代码中的一个对象。 我能够访问其他字段,如,,等使用(或类似),但返回一个空字符串,而它预计将返回"#155"值。

  • 我使用的是junit4提供的restassured。在我的测试方法中,我在mongodb中创建了一个对象,当我运行测试时,它也成功地持久化了。但是我需要存储创建的id,所以我尝试获取响应体。但是< code>response.getBody()。asString()为空。 当我从外部调用restendpoint时,它会返回带有相关字段的响应体,因此rest API没有问题。 如果上述问题没有答案,

  • 我无法从resultDesc中找到文本: 我已经尝试了与命名空间,但我一直得到: 实际反应是: 我尝试过一些链接:https://github.com/rest-assured/rest-assured/wiki/Usage#xml-名称空间 是的,下面的内容可能有用,但我真的很感激能够理解手头的这个问题吗? https://stackoverflow.com/questions/28298851

  • 我是新来的,可以放心。使用请放心,我试图验证数据详细信息是否找到。这里有两个数据细节。有时它将是2,3或5 Am获得响应,如下所示并使用java 代码使用 而不是检查数据名是否为空。我怎么做才能放心。