You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用RestAssured Java提取MailTM API的hydra:member属性报错

解决MailTM API中JsonPath提取hydra:member字段失败的问题

问题场景

提取MailTM的GET /domains API响应里的hydra:member字段时出现解析错误,API响应结构如下:

{
"@context": "/contexts/Domain",
"@id": "/domains",
"@type": "hydra:Collection",
"hydra:member": [
    {
        "@id": "/domains/63d9a7067f7658e92f217bdd",
        "@type": "Domain",
        "id": "63d9a7067f7658e92f217bdd",
        "domain": "eurokool.com",
        "isActive": true,
        "isPrivate": false,
        "createdAt": "2023-02-01T00:00:00+00:00",
        "updatedAt": "2023-02-01T00:00:00+00:00"
    }
],
"hydra:totalItems": 1
}

使用RestAssured的JsonPath提取字段时,@context、@type等字段能正常获取,但提取hydra:member时抛出java.lang.IllegalArgumentException: Invalid JSON expression: Script1.groovy: 1: unexpected token: : @ line 1, column 10.错误。

原代码如下:

RestAssured.baseURI = "https://api.mail.tm";

Response response = given()
                .when()
                .get("/domains")
                .then()
                .extract().response();  
  
response.body().jsonPath().get("hydra:member");

解决方案

问题根源是JsonPath会把字段名里的冒号识别为命名空间分隔符,导致解析逻辑混乱。只需将包含特殊字符的字段名用单引号或双引号包裹,让JsonPath将其当作普通字符串处理即可。

修改后的代码:

// 单引号包裹字段名
response.body().jsonPath().get("'hydra:member'");

// 或双引号包裹(注意Java里需要转义)
response.body().jsonPath().get("\"hydra:member\"");

调整后就能正确提取hydra:member对应的数组内容。

内容的提问来源于stack exchange,提问作者Oreliya Fernando

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:35:08