es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Intentando filtrar un objeto JSON para una colección de un solo valor en el marco de pruebas de Karate API.

Aquí tengo un objeto JSON.

def respuesta =
“””
[
{
nombre: ‘xyz’,
“trabajos”: [
“TRABAJO1”
],
“estado”: “COMPLETADO”,
“progreso”: 100
},
{
nombre: ‘xyz1’,
“trabajos”: [
“TRABAJO2”
],
“estado”: “COMPLETADO”,
“progreso”: 100
}
]
“””

Quiero obtener el JSON filtrado utilizando “trabajos” y mostrarlo como se muestra a continuación:

{
nombre: ‘xyz1’,
“trabajos”: [
“TRABAJO2”
],
“estado”: “COMPLETADO”,
“progreso”: 100
}

¿Alguien puede ayudarme?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, para filtrar el JSON utilizando “jobs”, puede usar el siguiente código:

    def response = """
    [
      {
        "name": "xyz",
        "jobs": [
          "JOB1"
        ],
        "status": "COMPLETED",
        "progress": 100
      },
      {
        "name": "xyz1",
        "jobs": [
          "JOB2"
        ],
        "status": "COMPLETED",
        "progress": 100
      }
    ]
    """
    
    def filteredResponse = new JsonSlurper().parseText(response) // analiza la respuesta JSON
            .find { it.jobs.contains('JOB2') } // filtra los objetos por el array "jobs" que contenga "JOB2"
            as JsonOutput // convierte el resultado en JsonOutput para mostrar en el formato deseado
    
    println filteredResponse.prettyPrint() // imprime el JSON filtrado
    

    Este código mostrará el siguiente JSON filtrado:

    {
        "name": "xyz1",
        "jobs": [
            "JOB2"
        ],
        "status": "COMPLETED",
        "progress": 100
    }
    

Comments are closed.