当前位置: 首页 > 知识库问答 >
问题:

如何将XML SOAP字符串转换为JSONObject(com.ibm.json.java.JSONObject)

壤驷德宇
2023-03-14

日安,

我在Adapter IBM Mobilefirst平台中创建了一个java类,它将从Jax-ws服务获得响应。


     // read direct to soap service - 4/4/2017
        protected JSONObject createJsonObjectFrmSOAPRequest(Map mapsData) throws IOException, SOAPException {
            JSONObject jsonObj = new JSONObject();
            String responseSoap="";
            // Create SOAP Connection
            SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
            SOAPConnection soapConnection = soapConnectionFactory.createConnection();
            try {
            // Send SOAP Message to SOAP Server
            String url = "http://XXXXX:001/test-pvr-ws/empl_get";
            SOAPMessage soapResponse = soapConnection.call(createSOAPRequest(mapsData), url);

            // Process the SOAP Response
            responseSoap = printSOAPResponse(soapResponse);

            // how to convert to jsonobject, the output is in xml string
            //  XMLToJSONTransformer.transform(responseSoap); - don't know how to use XMLToJSONTransformer
            //JSONObject.parse(responseSoap); // convert String to JSONObject


            logger.info("jsonObject : " + jsonObj);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return jsonObj;
        }


        protected String printSOAPResponse(SOAPMessage soapResponse) throws Exception {
            String finalstringEnv = "";

            try {

                TransformerFactory transformerFactory = TransformerFactory.newInstance();
                Transformer transformer = transformerFactory.newTransformer();
                Source sourceContent = soapResponse.getSOAPPart().getContent();
                System.out.print("\nResponse SOAP Message = ");
                //create a StringWriter for the output
                StringWriter outWriter = new StringWriter();
             // StreamResult result = new StreamResult(System.out); // this is for print line output
                StreamResult result = new StreamResult(outWriter);
                transformer.transform(sourceContent, result);
             // how to convert Transformer.transform() to String java
                StringBuffer sb = outWriter.getBuffer(); 
                finalstringEnv = sb.toString();


            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }



        return finalstringEnv;
        }

2.这段代码将获得XML字符串形式的响应,但我不知道如何使用库com.ibm.json.*。我想将字符串响应转换为JSONObject。

2.1.XML Soap信封中的结果响应(我得到的成功结果示例)。

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
    <a:getTheResponse xmlns:a="http://XXXXX:001/test-pvr-ws/empl_get/">
    <getTheRecord>
    <statusCode>0</statusCode>
    <getTheRecord>
    <userid>1212</userid>
    </a:getTheResponse>
    </soapenv:Body>
    </soapenv:Envelope>

2.2.responseSoap字符串变量我需要将字符串XML Soap响应转换为JSONObject


    // Process the SOAP Response
      responseSoap = printSOAPResponse(soapResponse);
    //.............. code to convert String XML Soap response To  JSONObject

共有1个答案

崔单弓
2023-03-14

我回答我的问题:

最近我只是在尝试,我需要使用这个方法XMLToJSONTransformer(com.ibm.json.XML.XMLToJSONTransformer)将XML字符串转换为JsonObject。

String jsonObjectStr ="";

// convert String to JSONObject
jsonObjectStr = xmlToJsonTransformer.transform(responseSoap);
        jsonObj = JSONObject.parse(jsonObjectStr); 
 类似资料:
  • 我正在使用将Json从Web获取到字符串中。 这可能很简单,但我似乎无法将此字符串转换为。 我该怎么做?

  • 问题内容: 请建议如何将使用库转换为使用库。 我未成功执行的操作: 问题答案: 您无需使用。您应该使用Gson在JSON字符串和您自己的Java对象之间进行转换。 请参阅《Gson用户指南》: (序列化) (反序列化)

  • 问题内容: 我正在阅读有关python的新f字符串的 博客 ,它们看起来很整洁。但是,我希望能够从字符串或文件中加载f字符串。 我似乎找不到任何执行此操作的字符串方法或其他函数。 从上面我的链接中的示例: 但是,如果我有琴弦怎么办?我希望能够像这样: 事实证明,我已经可以执行类似的操作并获得性能提高。即: 问题答案: f字符串是代码。不仅以安全的方式(当然,字符串文字就是代码),而且以危险的任意代

  • 问题内容: 我有一个,我需要一个。如何从一个转换为另一个? 问题答案: 好问题。我有以下五种 6种方法可以做到这一点。 注意:返回。因此有效地两者是相同的。 调用,这又设置了数组。 另一方面,调用以下程序包私有构造函数。 从源代码中的Java 8的源代码 因此似乎是最有效的方法,在这两个存储器和速度方面,用于转换char到String。

  • 问题内容: 我一直在尝试使用 GZIPOutputStream 等,但在理解它们方面没有成功。我要做的就是将字符串- “字符串” 转换为GZIP Base64格式。我怎样才能做到这一点? 编辑: 通过GZIP Base64格式,我的意思是字符串首先使用GZIP压缩,然后转换为Base64 问题答案: 使用Apache Commons Codec 。 这是一个示例类: 哪个输出: 在Linux下,您

  • 问题内容: 我想获取一串字符串并将其转换为单词对流。例如: 我有: 我想要:。 这几乎与Zipping相同,如使用带有Lambda的JDK8的Zipping流中概述的那样(java.util.stream.Streams.zip) 但是,这会产生: 以下代码有效,但显然是错误的方法(不是线程安全的等): 问题答案: 如果你: 不喜欢使用流中所有字符串创建列表的想法 不想使用外部库 喜欢弄脏你的手