如何从Java Soap Web Service返回JSON结果

时间:2019-03-04 10:47:17

标签: java json web-services soap gson

好的,我已经按照您的建议提出了我的测试代码。我搜索了互联网,得到Gson,这使这项工作变得容易。我通过将结果打印到这样的控制台进行了测试,并返回了预期的json结果

public String printJson()
{
    ProductBLL productBLL = new ProductBLL();
    List<String> catList = productBLL.getProductCatagories();

    Gson gson = new Gson();
    String jsonCatList = gson.toJson(testList);
    System.out.println("Category List: " + jsonCatList);

}

输出
Category List: ["Book","Music","Movies"]

但是当我在Java soap Web服务中尝试使用它时,它无法正常工作,这意味着该Web服务仍在返回xml。

这是使用Gson

的Web服务方法
@WebMethod
public String getCategories()
{
    List<String> catList = ppBll.getProductCatagories();

    Gson gson = new Gson();
    String jsonCatagoryList = gson.toJson(catList);

    return jsonCatagoryList ;
}


输出

<?xml version="1.0" encoding="UTF-8"?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<S:Body>
    <ns2:getCategoriesResponse xmlns:ns2="http://aman.org/">
        <return>Book</return>
        <return>Music</return>
        <return>Movies</return>
    </ns2:getCategoriesResponse>
</S:Body>

但是我需要它返回json。应该在何处进行修改以使其在Web服务中起作用?

1 个答案:

答案 0 :(得分:2)

SOAP Web服务将始终返回XML,也许您可​​以创建另一个REST Web服务,该内部将在内部调用SOAP WS并生成JSON。借助REST,您可以轻松做到这一点。

所以 步骤1:

创建一个生成JSON的REST WS

第2步:

从此REST WS调用SOAP WS,并将输出转换为所需的格式。