Avalados por :

Script Groovy para Converter Campo 'Number' em Inteiro em JSON de SAP CPI

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

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

No SAP CPI, converti o XML em JSON, mas no JSON, há um campo "number" que aparece várias vezes em lineitems, ou seja, em um array. Para remover as aspas duplas, tentei convertê-lo para inteiro usando um script Groovy, mas resultou em um erro. Por favor, forneça o script Groovy. Anexo o arquivo JSON e o script Groovy.

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

import java.util.HashMap;

import groovy.json.*;

def Message processData(Message message) {

//Corpo

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...

Olá Manoj,

Você pode fazer atualizações no script groovy anterior para remover as aspas apenas em campos específicos, em vez de em todos os campos?

Você pode usar o mesmo payload que Andrew compartilhou na pergunta anterior.

Saudações,

Vishnu

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

Obrigado pela sua resposta, Manoj.

No entanto, seu script groovy remove as aspas duplas de todos os campos numÈricos no json. Isso não ajuda ao meu propÛsito.

. Eu quero remover as aspas apenas no valor do elemento de string "number", mas não em outros campos numÈricos no json.


Alguém pode me ajudar com o script groovy correto para transformar um elemento de string de array em um elemento inteiro de array, ou seja, removendo as aspas duplas no valor do campo de string.

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

Olá Andrew,

Tente usar o código abaixo:

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;}

Obrigado,

Manoj K

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

Olá Andrew,

Dado que tanto os campos exportDeclaration como lineItems são arrays, é necessário incluir outro loop para lineItems.

O código a seguir é funcional:

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

import java.util.HashMap;

import groovy.json.*;

def Message processData(Message message) {

//Corpo

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;

}

Saudações,

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?