
Hola, chicos,
Después de mucho tiempo sin escribir aquí, decidí tomarme unos minutos para compartir un código que usé recientemente en un proyecto y que no pude encontrar aquí en la comunidad.
Como no encontré nada relacionado, básicamente, el código que voy a compartir tiene una funcionalidad simple y muy solicitada en algunos proyectos, limpiando mensajes JSON, eliminando campos nulos y en blanco (Ej. «campo» : «» o «campo»: nulo.).
import com.sap.gateway.ip.core.customdev.util.Message
import groovy.json.JsonBuilder
import groovy.json.JsonSlurper
def Message processData(Message message) {
def body = message.getBody(String.class)
def jsonSlurper = new JsonSlurper()
def jsonObject = jsonSlurper.parseText(body)
def cleanedObject = removeEmptyFields(jsonObject)
def jsonBuilder = new JsonBuilder(cleanedObject)
message.setBody(jsonBuilder.toPrettyString())
return message
}
def removeEmptyFields(def object) {
if (object instanceof Map) {
object.entrySet().removeAll { it.value == null || (it.value instanceof String && it.value.trim() == "") }
object.collectEntries { [it.key, removeEmptyFields(it.value)] }
} else if (object instanceof List) {
object.collect { removeEmptyFields(it) }.findAll { it != null }
} else {
object
}
}
Ahora vamos a probarlo, que es muy simple como se muestra a continuación:
Eso es todo chicos, me alegro de haberlos ayudado y comenten si están usando el código en sus proyectos.
¡Adiós!
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073