我有一些JSON文件,预期结果保存在一个JSON文件中,我从中创建JSONObj:
JSONObject jsonObject = new JSONObject(myJson);
然后我使用我的变量来获得正确的JSON(我有不同的用户,在这里显示为变量)
JSONObject jsonObjData = jsonObject.getJSONObject(variable1).getJSONObject(variable2);
然后我有一些真实的响应,我试图将其与预期的JSON(数组)进行比较(只是其中的一部分)。
到目前为止的代码:
ValidatableResponse respBody = response.then();
JSONArray expectedListArr = jsonObjData .getJSONArray(dtEntry);
respBody.body("myPath", hasItems(expectedListArr));
}
我用 cucumber ,所以它看起来像这样:
And Values for key "myPath" equals the following
| myVariable2 |
和步骤
@Then("Values for key {string} equals the following")
public void valuesForListContains(String pathKey, DataTable dt) {
ValidatableResponse respBody = response.then();
if (dt.values().stream().anyMatch(a->a.contains("myVariables "))) {
String dtEntry = dt.toString().replaceAll("\\|","").trim();
JSONArray expectedListArr = jsonObjData.getJSONArray(dtEntry);
respBody.body("myPath", hasItems(expectedListArr));
}
我不知道我是不是在绕圈子,但上面的话告诉我:
**1个预期失败。JSON路径deliveryCountries不匹配。预期:(a collection containing〈[“excpetedValue”]〉)实际值:〈[excpetedValue]〉
我的json:
{
"myVariable4": [
{
"key1": val,
etc.
}
],
"myVariable2": [
"expectedValue"
],
"myVariable3": [
"val1",
"val2",
"val3",
"val4",
etc.
],}
1条答案
按热度按时间xesrikrc1#
对不起,我不明白你的问题!
如果你有一个这样的JSON:
所以首先du必须得到JSONArray:
之后,你可以再次获得对象:
如果数组只有一个Object:
然后你得到key 1的值:
我希望我正确地理解了你的问题。