我有以下JSON响应匿名正文,我需要动态解析嵌套数组,以便在chovy的闭包中使用find
或findAll
根据条件检索键的值
[
{
"children": [
{
"attr": {
"reportId": "1",
"reportShortName": "ABC",
"description": "test,
}
},
{
"attr": {
"reportId": "2",
"reportShortName": "XYZ",
"description": "test",
}
}
}
]
我尝试了以下方法,但没有从JSON响应中检索reportId键的值
package com.src.test.api;
import static io.restassured.RestAssured.given;
import io.restassured.path.json.JsonPath;
import io.restassured.response.Response;
public class GetReportId {
public void getReportId(String reportName) throws Exception {
String searchReports = "http://localhost:8080/reports";
Response resp=given().request().when().get(searchReports).then().extract().response();
JsonPath jsonPath = new JsonPath(resp.asString());
String reportId1 =jsonPath.get("$.find{it.children.contains(restAssuredJsonRootObject.$.children.find{it.attr.reportShortName == 'ABC'})}.attr.reportId");
String reportId2 = jsonPath.get("$.find{it.children.attr.reportShortName.contains(restAssuredJsonRootObject.$.children.find{it.attr.reportShortName.equals('XYZ')}.attr.reportShortName)}.attr.reportId");
System.out.println("ReportId: " + reportId1);
}
}
父匿名数组中可能有多个JSON对象,需要在groovy闭包中使用find或findAll来获取reportId
需要获取< code>reportId,但似乎有问题。任何帮助都将不胜感激。
假设您想要所有ReportID
List<String> reportIds = jsonPath.get("children.flatten().attr.reportId");
会给你想要的,即使父匿名数组有多个条目。
我用下面的JSON进行了测试
[
{
"children": [
{
"attr": {
"reportId": "1",
"reportShortName": "ABC",
"description": "test"
}
},
{
"attr": {
"reportId": "2",
"reportShortName": "XYZ",
"description": "test"
}
}
]
},
{
"children": [
{
"attr": {
"reportId": "3",
"reportShortName": "DEF",
"description": "test"
}
},
{
"attr": {
"reportId": "4",
"reportShortName": "IJK",
"description": "test"
}
}
]
}
]
它给了我<code>〔“1”、“2”、“3”、“4”〕
如果您知道要查找的reportId的索引,那么您可以这样使用它:
String reportId = jsonPath.get("children.flatten().attr.reportId[0]");
如果您要查找特定报告的 reportId,您也可以执行以下操作:
String reportId = jsonPath.get("children.flatten().attr.find{it.reportShortName == 'ABC'}.reportId")
会给你< code >“1”。
注意:您分配结果的变量的类型对于类型推断和转换很重要。例如,您不能这样做:
String [] reportIds = jsonPath.get("children.flatten().attr.reportId");
或
int reportId = jsonPath.get("children.flatten().attr.reportId[0]");
这两件事都将抛出ClassCastException。
我正在尝试向我的应用程序添加一些带有Rest-Asure的测试,但我不知道如何断言一些嵌套值。错误消息是: 预期:(包含“json”的集合)实际:[[json、spring、gulp、path等。]] 代码如下: 这是rest控制器返回的JSON文件: 我不知道如何做出正确的断言,任何帮助都很好。谢谢!
null 我正在寻找一个解决方案,如Groovy GPath语法 store.book-此数组的大小。 store.book[*].category-如何计算数组中的键值。 store.bicycle-如果发现它必须返回true值
我正在尝试使用NEST c#客户端搜索我的弹性搜索嵌套对象。我的索引名称是”,我的”字段。 这是我的班级: 现在我的web应用程序看起来像这样: 这里是我需要搜索的单词。 我在浏览器的搜索框(网络表单)中输入它。 搜索关键字可能包含任何需要与我的表人员中的任何字段的值匹配。 如果搜索关键字与嵌套文档匹配,则应返回确切的嵌套文档。 我不知道我的嵌套查询有问题,或者我实际上不知道如何使用嵌套查询来执行
问题内容: 假设我有一个对象: 我想找到一个id为1的对象。是否有类似这样的功能?我可以使用Underscore的方法,但必须从顶部开始然后向下过滤。 问题答案: 递归是您的朋友。我更新了该函数以说明属性数组:
问题内容: 我有一个下面的JSON字符串,我想在JSON字符串中查找/搜索条件。 1)。查找存在的键数。2)。获取给定键的值(如果有数组) 我正在寻找类似Groovy GPath语法的解决方案 store.book-此数组的大小。 store.book [*]。category-如何对数组中存在的键进行计时。 store.bicycle-如果发现它必须返回真实值 问题答案: 您还可以使用REST
我使用的是spring数据,我的DAO看起来像 在上面的代码中,注释行显示了我的意图。spring数据是否可以提供内置功能,使用这样的方法查找所有记录的顺序按某一列与ASC/DESC?