JAX-WS Web服务的JSON输出?

时间:2014-09-04 08:21:45

标签: java json spring cxf jax-ws

jax-ws soap-webservice是否可以输出json格式而不是xml

@Component
@WebService
public class HRSService {

    @WebMethod
    public String test(String value) {
        return value; //returned as XML. JSON possible?
    }
}

2 个答案:

答案 0 :(得分:5)

显然可以按照https://jax-ws-commons.java.net/json/

指示的说明进行操作

总结:

@BindingType(JSONBindingID.JSON_BINDING)
public class MyService {

    public Book get(@WebParam(name="id") int id) {
        Book b = new Book();
        b.id = id;
        return b;
    }

    public static final class Book {
        public int id = 1;
        public String title = "Java";
    }
}

您需要在jaxws-json.jar中使用WEB-INF/lib才能实现此目的。

我希望它有所帮助!

答案 1 :(得分:1)

这已经很晚了。我最近回到Java编程,但对于将来访问此页面的人。 JAXWS metro文档中的示例仅适用于javascript。我将以下内容与JSONObject一起使用:

@WebServiceProvider
@ServiceMode(value = Service.Mode.MESSAGE)
@BindingType(value=HTTPBinding.HTTP_BINDING)

然后实现Provider(DataSource),如例:

public class clazz implements Provider<DataSource>
{ ...

    @Override
    public DataSource invoke(DataSource arg)
    { 
        ...
        String emsg = "Request Parameter Error.";
        String sret = create_error_response(emsg);

        return getDataSource(sret);
    }
}

private DataSource getDataSource(String sret)
{
    ByteArrayDataSource ds = new ByteArrayDataSource(sret.getBytes(), "application/json");
    return ds;
}

public String create_error_response(String msg)
{
    JSONObject json = new JSONObject();
    json.put("success", new Boolean(false));
    json.put("message", msg);
    return json.toString();
}