【发布时间】:2017-05-18 16:20:02
【问题描述】:
我有一个 REST 网络服务,它反过来调用一个 Soap 请求。我想将soap响应转换为json,以便它可以作为输出返回给REST服务。实现这一目标的最有效方法是什么?
为了阐述这个问题,假设我得到了如下所示的 Soap xml 响应。
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPriceResponse>
<m:Price>344.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>
我希望json是这样的
{“价格”:“344.5”}
我已经尝试了 org.json 中的 XMLtoJSONObject 方法。但它没有给出我期望的输出。
【问题讨论】:
-
不会有一个库可以为您提供预期的输出。您需要自己编写一个基于 XML 解析器的过滤器,您可以在其中手动将每个所需的值映射到它的键。
-
Lookup Jersey,它可以将 Java POJO 转换为 JSON,反之亦然。因此,如果您有一个表示 XML 实体的 POJO,那么您将被排序。但是 JSON 字符串输出可能与您的预期不同。
-
我试图转换的原始响应非常大并且包含大量数据。所以我在编写自己的过滤器时担心性能。有没有标准的方法来做到这一点?
标签: java json xml web-services soap