¿Cómo extraer datos JSON presentes en RestApi?
Hago una publicación a una API con Rest Assured y luego intento asegurarme de que los datos esperados coincidan con los datos de respuesta, pero obtengo algunos errores como este: “java.lang.IllegalArgumentException: el parámetro “data” se utilizó pero no se definió. Defina los parámetros usando la función JsonPath.params (…)”.
Mi código:
String payload_data = "{" +
"\"Time\":1638057600, " +
"\"exampleType\":example, " +
"\"Id\":[2]}";
RestAssured.defaultParser = Parser.JSON;
given().
contentType(ContentType.JSON).
body(payload_data).
when().
post(api_url).
then().
statusCode(200).
body("data.examples.2.exampleData", equalTo("33"));
}
Mis datos JSON:
{
"success": true,
"data": {
"examples": {
"2": {
"ex_data": 0,
"exampleData": 33,
"data_ex": 0,
}
}
}
davy.ai
El mensaje de error “El parámetro ‘data’ se usó pero no se definió. Defina los parámetros utilizando la función JsonPath.params (…)” sugiere que puede haber un problema con la forma en que se define el parámetro
body
en el código. Específicamente, parece que el parámetrobody
puede no estar definido correctamente, posiblemente debido a parámetros faltantes o formato incorrecto.Una solución potencial a este problema es usar la función
JsonPath.params (...)
para definir los parámetros esperados en los datos de respuesta. Aquí hay una versión actualizada del código que utiliza esta función para verificar los datos esperados:Aquí, se utiliza la función
JsonPath.params (...)
para definir el parámetro esperado “data” en los datos de respuesta. El código actualizado también incluye afirmaciones adicionales debody
que verifican otros parámetros esperados en los datos de respuesta.Tenga en cuenta que el parámetro
body
actualizado usa comillas simples alrededor de la clave'2'
, ya que los datos JSON originales usan comillas dobles alrededor de la clave"2"
. La funcióndetachRoot
se utiliza para eliminar el nodo “examples” de la raíz, para que las afirmaciones posteriores debody
verifiquen parámetros dentro del nodo “data”.Con estas actualizaciones, el código debería poder verificar correctamente los datos esperados en la respuesta de la API.