Reputation: 4318
I want to iterate Response Child one by one using Rest Assured Java
public void preemptivve() throws ParseException {
RequestSpecification request = RestAssured.given()
.contentType("application/x-www-form-urlencoded; charset=utf-8")
.formParam("grant_type", "client_credentials");
Headers header = new Headers(BaseClass.list);
request.headers(header);
Response response = request.given().when().post("/getclientdetails");
response.then().assertThat().body("size()", is(4));
String jsonString=response.asString();
String accesstoken=JsonPath.from(jsonString).get("access_token");
System.out.println(jsonString);
System.out.println(accesstoken);
org.testng.Assert.assertEquals(response.getStatusCode(), 200);
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(reponse.asString());
Iterator<String> fieldNames = jsonNode.fieldNames();
while(fieldNames.hasNext()) {
String fieldName = fieldNames.next();
JsonNode field = jsonNode.get(fieldName);
System.out.println(fieldName);
System.out.println(field);
}
}
I am getting parent element..
Eg.,
"metadata": {
"msgLst": [
{
"code": "00",
"text": "SUCCESS"
}
]
}
I am getting metadata but i want msgLst, code and text as well.. How to get that..
I need to get the response element one by one by iterating to validate that response element is correct or not
Upvotes: 0
Views: 764
Reputation: 5917
I'm not sure what your actual goal is, but if you want to get all keys of json object using jackson then this code might work for you.
private List<String> getKeys(JsonNode node, List<String> allKeys) {
Iterator<Map.Entry<String, JsonNode>> fields = node.fields();
while (fields.hasNext()) {
Map.Entry<String, JsonNode> next = fields.next();
allKeys.add(next.getKey());
JsonNode value = next.getValue();
if (value.isObject()) {
getKeys(value, allKeys);
}
if (value.isArray()) {
if (value.size() > 0) {
JsonNode jsonNode = value.get(0);
getKeys(jsonNode, allKeys);
}
}
}
return allKeys;
}
I tested with your sample json:
@Test
void SO_69436972() throws JsonProcessingException {
String json = "{\n" +
" \"metadata\": {\n" +
" \"msgLst\": [\n" +
" {\n" +
" \"code\": \"00\",\n" +
" \"text\": \"SUCCESS\"\n" +
" }\n" +
" ]\n" +
" }\n" +
"}";
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(json);
List<String> keyList = new ArrayList<>();
System.out.println(getKeys(jsonNode, keyList));
}
[metadata, msgLst, code, text]
Upvotes: 1