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.

Mule Dataweave – convirtiendo un arreglo de arreglos en un arreglo de objetos.

Sería útil si alguien pudiera ayudarme con la siguiente expresión de DataWeave:

[{
“id”: “1001”,
“email”: null,
“role”: “admin”,
“updatedAt”: “2019-12-04T22:39:00.322000Z”,
“Attributes”: [{
“id”: “1001A”,
“name”: “GEO”,
“value”: null
},
{
“id”: “1001B”,
“name”: “Group”,
“value”: “admin”
},
{
“id”: “1001C”,
“name”: “Title”,
“value”: null
},
{
“id”: “1001D”,
“name”: “Location”,
“value”: “New York”
}
],
“isActive”: false
},
{
“id”: “2001”,
“email”: null,
“role”: “student”,
“updatedAt”: “2019-12-05T22:39:00.322000Z”,
“Attributes”: [{
“id”: “2001A”,
“name”: “GEO”,
“value”: null
},
{
“id”: “2001B”,
“name”: “Group”,
“value”: “admin”
},
{
“id”: “2001C”,
“name”: “Title”,
“value”: null
},
{
“id”: “2001D”,
“name”: “Location”,
“value”: “New York”
}
],
“isActive”: false
},
{
“id”: “3001”,
“email”: null,
“role”: “admin”,
“updatedAt”: “2019-12-04T22:39:00.322000Z”,
“Attributes”: [{
“id”: “3001A”,
“name”: “GEO”,
“value”: null
},
{
“id”: “3001B”,
“name”: “Group”,
“value”: “admin”
},
{
“id”: “3001C”,
“name”: “Title”,
“value”: null
},
{
“id”: “3001D”,
“name”: “Location”,
“value”: “New York”
}
],
“isActive”: false
}
]

Y mi salida debería ser así:

[
{
“id”: “1001”,
“email”: null,
“role”: “admin”,
“updatedAt”: “2019-12-04T22:39:00.322000Z”,
“GEO”: null,
“Group”: “admin”,
“Title”: null,
“Location”: “New York”,
“isActive”: false

},
{
    "id": "2001",
    "email": null,
    "role": "student",
    "updatedAt": "2019-12-05T22:39:00.322000Z",
    "GEO": null,
    "Group": "student",
    "Title": null,
    "Location": "New York",
    "isActive": false
},
{
    "id": "3001",
    "email": null,
    "role": "admin",
    "updatedAt": "2019-12-04T22:39:00.322000Z",
    "GEO": null,
    "Group": "admin",
    "Title": null,
    "Location": "New York",
    "isActive": false
}

]

Tags:  

Answer

  1. Avatar for davy.ai

    Para lograr la salida deseada, puede utilizar la siguiente expresión DataWeave:

    %dw 2.0
    output application/json
    ---
    payload map (item) -> {
        id: item.id,
        email: item.email,
        role: item.role,
        updatedAt: item.updatedAt,
        (item.Attributes filter ($.value != null)) mapObject {
            ($.name): $.value
        },
        isActive: item.isActive
    }
    

    En esta expresión, comenzamos con una matriz original y usamos la función map para transformar cada ítem en un nuevo objeto.

    Para cada objeto, especificamos los campos originales id, email, role, updatedAt, e isActive.

    Luego utilizamos la función filter para eliminar cualquier objeto de atributo donde el campo value sea nulo. Usamos mapObject para transformar los objetos de atributo restantes en un nuevo objeto donde cada campo es el name y cada valor es el value.

    Este nuevo objeto se agrega a la salida utilizando paréntesis alrededor de la función mapObject y toda la expresión se encierra entre corchetes para que sea una matriz.

Comments are closed.