【问题标题】:Convert soap response to json将soap响应转换为json
【发布时间】:2022-10-05 15:08:15
【问题描述】:

我有以下肥皂回应

<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">
   <soap:Body>
      <ns2:confirmPayer_10Response xmlns:ns2=\"http://v1.ws.provider.acp.com/\">
         <return>
            <KeyValues>
               <Key>MICROFILM_NUMBER</Key>
               <Data>71111112236100141977490</Data>
            </KeyValues>
            <KeyValues>
               <Key>USER_TOKEN</Key>
               <Data>hpuser</Data>
            </KeyValues>
            <KeyValues>
               <Key>PASSWORD_TOKEN</Key>
               <Data>hpuser+22**</Data>
            </KeyValues>
         </return>
      </ns2:confirmPayer_10Response>
   </soap:Body>
</soap:Envelope>

如何将此响应转换为 json,如下所示

{
   \"MICROFILM_NUMBER\" : \"71111112236100141977490\",
   \"USER_TOKEN\" : \"hpuser\",
   \"PASSWORD_TOKEN\" : \"hpuser+22**\"
}
  • 1. 从 SOAP 正文中获取 XML 答案。 2. 遍历 KeyValues。 3. 对于每个键值,将其存储到 Map 4. 将 Map 序列化为 Json,您将得到您想要的。

标签: java json xml spring-boot soap


【解决方案1】:

Underscore-java 可以将 xml 转换为 json。

        String xml = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" +
            "   <soap:Body>\n" +
            "      <ns2:confirmPayer_10Response xmlns:ns2=\"http://v1.ws.provider.acp.com/\">\n" +
            "         <return>\n" +
            "            <KeyValues>\n" +
            "               <Key>MICROFILM_NUMBER</Key>\n" +
            "               <Data>71111112236100141977490</Data>\n" +
            "            </KeyValues>\n" +
            "            <KeyValues>\n" +
            "               <Key>USER_TOKEN</Key>\n" +
            "               <Data>hpuser</Data>\n" +
            "            </KeyValues>\n" +
            "            <KeyValues>\n" +
            "               <Key>PASSWORD_TOKEN</Key>\n" +
            "               <Data>hpuser+22**</Data>\n" +
            "            </KeyValues>\n" +
            "         </return>\n" +
            "      </ns2:confirmPayer_10Response>\n" +
            "   </soap:Body>\n" +
            "</soap:Envelope>";
        U.Builder builder = U.objectBuilder().fromXml(xml);
        U.Builder out = U.objectBuilder();
        out.add(builder.get("soap:Envelope.soap:Body.ns2:confirmPayer_10Response.return.KeyValues.0.Key"),
            builder.<Object>get("soap:Envelope.soap:Body.ns2:confirmPayer_10Response.return.KeyValues.0.Data"));
        out.add(builder.get("soap:Envelope.soap:Body.ns2:confirmPayer_10Response.return.KeyValues.1.Key"),
            builder.<Object>get("soap:Envelope.soap:Body.ns2:confirmPayer_10Response.return.KeyValues.1.Data"));
        out.add(builder.get("soap:Envelope.soap:Body.ns2:confirmPayer_10Response.return.KeyValues.2.Key"),
            builder.<Object>get("soap:Envelope.soap:Body.ns2:confirmPayer_10Response.return.KeyValues.2.Data"));
        System.out.println(out.toJson());
{
  "MICROFILM_NUMBER": "71111112236100141977490",
  "USER_TOKEN": "hpuser",
  "PASSWORD_TOKEN": "hpuser+22**"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多