¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como converter XML para JSON em Java sem problemas com Arrays

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

Olá Gurus!

Estou com dificuldades para descrever um código Java para converter Xml em Json.

Tenho visto alguns códigos em blogs, mas todos eles têm problemas com Arrays.

Este é o meu objetivo:

Porém, meu código Java está gerando este Json:

Alguém pode me ajudar com alguma ideia de como posso criar este código corretamente? Agradeço desde já!

jsonpi.png json.png
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá,

Embora esta seja uma pergunta antiga, gostaria de respondê-la.

Para obter o formato JSON necessário, você tem 2 alternativas:

1) Instalar um adaptador personalizado e usá-lo no canal receptor Rest conforme mencionado aqui .

2) Utilizar um mapeamento Java personalizado para converter o XML na estrutura JSON desejada conforme mencionado aqui .

Saudações,

Kiran Roy

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

°Olá Sugata!

Tenho o mesmo código que criaste.

   package Xml2Json;
   import java.io.BufferedReader;
   import java.io.FileInputStream;
   import java.io.FileOutputStream;
   import java.io.IOException;
   import java.io.InputStream;
   import java.io.InputStreamReader;
   import java.io.OutputStream;
   import java.io.StringWriter;
   import java.util.Map;
   
   import javax.xml.parsers.DocumentBuilder;
   import javax.xml.parsers.DocumentBuilderFactory;
   import javax.xml.transform.OutputKeys;
   import javax.xml.transform.Transformer;
   import javax.xml.transform.TransformerFactory;
   import javax.xml.transform.dom.DOMSource;
   import javax.xml.transform.stream.StreamResult;
   
   import org.json.JSONObject;
   import org.json.XML;
   import org.w3c.dom.Document;
   import org.w3c.dom.Node;
   
   import com.sap.aii.mapping.api.AbstractTransformation;
   import com.sap.aii.mapping.api.StreamTransformationException;
   import com.sap.aii.mapping.api.TransformationInput;
   import com.sap.aii.mapping.api.TransformationOutput;
   
   public class MakeItJSON extends AbstractTransformation {
   
       public static int PRETTY_PRINT_INDENT_FACTOR = 4;
   
       public MakeItJSON() {}
   
       public void transform(TransformationInput in, TransformationOutput out) throws StreamTransformationException {
           try {
               String sourcexml = "";
               String targetfile = "";
               String line = "";
   
               InputStream ins = in.getInputPayload().getInputStream();
               BufferedReader br = new BufferedReader(new InputStreamReader(ins));
   
               while ((line = br.readLine()) != null) {
                   sourcexml = sourcexml + line;
               }
   
               JSONObject jsonObject = XML.toJSONObject(sourcexml);
               String jsonPrettyPrintString = jsonObject.toString(PRETTY_PRINT_INDENT_FACTOR);
   
               targetfile = jsonPrettyPrintString;
   
               out.getOutputPayload().getOutputStream().write(targetfile.getBytes());
           } catch (Exception e) {
               e.printStackTrace();
           }
       }
   }
  

Mas se adicionar mais "elementos", o código JSON não cria todos os elementos.

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

Você pode usar o arquivo jar externo JSONObject.jar. Eu forneci um código de exemplo que pega dois nós de teste sob um nó raiz e os converte em um JSON Array -

package com.sap.XML2JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.XML;

public class XML2JSONArray
{

     public static int PRETTY_PRINT_INDENT_FACTOR = 4;
        public static String TEST_XML_STRING =
            "<?xml version=\"1.0\" ?><root><test attrib=\"jsontext\">abctest</test><test attrib=\"jsontext2\">deftest</test></root>";

        public static void main(String[] args) {
            try {
                JSONObject xmlJSONObj = XML.toJSONObject(TEST_XML_STRING);
                String jsonPrettyPrintString = xmlJSONObj.toString(PRETTY_PRINT_INDENT_FACTOR);
                System.out.println(jsonPrettyPrintString);
            } catch (JSONException je) {
                System.out.println(je.toString());
            }
        }
    }

    

and aqui está a saída - 
{"root": {"test": [
    {
        "attrib": "jsontext",
        "content": "abctest"
    },
    {
        "attrib": "jsontext2",
        "content": "deftest"
    }
]}}

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

Poderias compartilhar a solução para este problema, por favor?

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?