Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Junit 使用键断言JSonPath中的数组对象_Junit_Jsonpath_Mockmvc - Fatal编程技术网

Junit 使用键断言JSonPath中的数组对象

Junit 使用键断言JSonPath中的数组对象,junit,jsonpath,mockmvc,Junit,Jsonpath,Mockmvc,我试图通过内容键而不是数组位置来获取特定的数组项 JSON示例: {"items": [{ "key": "prop-name", "label": "Provider", "type": "DROPDOWN", "items": ["bla", "blub", "what", "ever"] }, { "key": "prop-modes", "label": "Transport mode

我试图通过内容键而不是数组位置来获取特定的数组项

JSON示例:

{"items": [{
        "key": "prop-name",
        "label": "Provider",
        "type": "DROPDOWN",
        "items": ["bla", "blub", "what", "ever"]
    }, {
        "key": "prop-modes",
        "label": "Transport modes",
        "type": "CHECKBOX",
        "items": ["AIR", "RAIL", "ROAD", "SEA"]
    }
]}
私有静态字符串URL\u GLOBAL\u FILTER=“/GLOBAL FILTER”;
私有静态字符串PROP_NAME=“PROP NAME”;
perform(get(URL\u GLOBAL\u FILTER).contentType(MediaType.APPLICATION\u JSON)).andExpect(status().isOk())
.andExpect(jsonPath($.items),hasSize(10)))
.andExpect(jsonPath($.items[?(@.key==\''+PROP\u NAME+“\''&&&&&.type===\'DROPDOWN\”)))存在())
.andExpect(jsonPath($.items[0].items],hasSize(4));
这个很好用。但我想做的是:

.andExpect(jsonPath("$.items[?(@.key == \"prop-name\")].items", containsString("bla")))
但这会引发以下错误:

java.lang.AssertionError: JSON path "$.items[?(@.key == "prop-name")].items"
应为:包含“bla”的字符串 但是:是net.minidev.json.JSONArray()

是什么意思?如何访问内部阵列

这似乎是我想要的


(更新问题)

您是否尝试过使用Hamcrest的
hasItem
匹配器

import static org.hamcrest.Matchers.*;

.andExpect(jsonPath("$.items[?(@.key == 'prop-name')].items[*]", hasItem("bla")));

*
是一个通配符,
items[*]
表示选择items数组的所有元素