Java 如何从api graphQL获取数据?
我在api graphQL上提出请求,并有body的响应: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&
{
"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>