Java 如何从api graphQL获取数据?

Java 如何从api graphQL获取数据?,java,list,hashmap,rest-assured,Java,List,Hashmap,Rest Assured,我在api graphQL上提出请求,并有body的响应: { "dataRequests": [ { "status": "success", "title": "token", "values": { "limit": 1, "offset&

我在api graphQL上提出请求,并有body的响应:

{
"dataRequests": [
    {
        "status": "success",
        "title": "token",
        "values": {
            "limit": 1,
            "offset": 0,
            "count": 1,
            "total": 1,
            "elements": [
                {
                    "type": "DOMAIN",
                    "permission": "default",
                    "properties": [
                        {
                            "name": "property:id",
                            "value": 390
                        },
                        {
                            "name": "setting:crawler:token",
                            "value": "token(here's real token)"
                        }
                    ],
                    "filters": []
                }
            ]
        }
    }
]
       }
我想用令牌获取字段“value”的值。但我有一个问题想要它

我的代码可以获取“dataRequests”字段的映射列表(使用RestAssured):

并且可以看到有标记的值


您能否提示我,我如何从该列表或通过反序列化api的其他方式获取带有令牌的“值”?

您的json有点复杂,有很多嵌套级别。我建议使用lib,而不是rest-assured提供的jsonpath

例如:

List<String> values = JsonPath.read(response.toString(), "$..value");
System.out.println(values);
//[390,"token(here's real token)"]
List values=JsonPath.read(response.toString(),“$…value”);
System.out.println(值);
//[390,“代币(这是真正的代币)”]
将jsonpath添加到pom.xml

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>2.6.0</version>
</dependency>

com.jayway.jsonpath
json路径
2.6.0
List<Map<String, String>> dataRequest = response.jsonPath().getList("dataRequests");

    for (Map<String, String> map : dataRequest) {
        System.out.println(map.entrySet());
    }
[status=success, title=token, values={limit=1, offset=0, count=1, total=1, elements=[{type=DOMAIN, permission=default, properties=[{name=property:id, value=390}, {name=setting:crawler:token, value=someToken}], filters=[]}]}]
List<String> values = JsonPath.read(response.toString(), "$..value");
System.out.println(values);
//[390,"token(here's real token)"]
<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>2.6.0</version>
</dependency>