Avalados por :

Script de Groovy para Convertir Campo 'Number' a Entero en JSON de SAP CPI

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 22 Vistas
0
Cargando...

json-output-from-xmltojson-converter.txt used-groovyscript.txt

En SAP CPI, convertí el XML a JSON, pero en el JSON, hay un campo "number" que aparece varias veces bajo lineitems, es decir, en un array. Para eliminar las comillas dobles, intenté convertirlo a entero usando un script de Groovy, pero resulta en un error. Por favor, proporciona el script de Groovy. Adjunto el archivo JSON y el script de Groovy.

import com.sap.gateway.ip.core.customdev.util.Message;

import java.util.HashMap;

import groovy.json.*;

def Message processData(Message message) {

//Cuerpo

def body = message.getBody(String.class);

def jsonSlurper = new JsonSlurper();

def list = jsonSlurper.parseText(body);

list.content.exportDeclaration.lineItems.each{

it.number [] = Integer.parseInt(it.get("number").toString());

}

def jsonOP = JsonOutput.toJson(list);

message.setBody(jsonOP);

return message;

}

json-output-from-xmltojson-converter.txt used-groovyscript.txt
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola Manoj,

¿Puedes hacer actualizaciones en el script groovy anterior para eliminar las comillas solo en campos específicos, en lugar de en todos los campos?

Puedes utilizar el mismo payload que Andrew compartió en la pregunta anterior.

Saludos

Vishnu

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Gracias por tu respuesta Manoj.

Pero tu script groovy elimina las comillas dobles de todos los campos numéricos en el json. Esto no ayuda a mi propósito.

. Quiero eliminar las comillas solo en el valor del elemento de cadena "number", pero no en otros campos numéricos en el json.


Alguien que me ayude con el script groovy correcto para cambiar un elemento de cadena de array en un elemento de entero de array, es decir, eliminando las comillas dobles en el valor del campo de cadena.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Andrew,

Intenta usar el código a continuación:

import com.sap.gateway.ip.core.customdev.util.Message;def Message processData(Message message) {def body = message.getBody(java.lang.String) as String;def output = body.replaceAll("\"(-?\\d+(?:[\\.,]\\d+)?)\"", "\$1");message.setBody(output);return message;}

Gracias,

Manoj K

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola Andrew,

Dado que tanto los campos exportDeclaration como lineItems son arreglos, debes incluir otro bucle para lineItems.

El código a continuación funciona:

import com.sap.gateway.ip.core.customdev.util.Message;

import java.util.HashMap;

import groovy.json.*

def Message processData(Message message) {

//Cuerpo

def body = message.getBody(String.class);

def jsonSlurper = new JsonSlurper()

def list = jsonSlurper.parseText(body)

list.content.exportDeclaration.lineItems.each{

it.each{

it.number =Integer.parseInt(it.get("number").toString());

}

}

def jsonOP = JsonOutput.toJson(list)

message.setBody(jsonOP)

return message;

}

Saludos,

Veena

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?