Java JAX-WS Web服务的JSON输出?
Java JAX-WS Web服务的JSON输出?,java,json,spring,cxf,jax-ws,Java,Json,Spring,Cxf,Jax Ws,jax-wssoap-webservice是否可能输出json格式而不是xml @Component @WebService public class HRSService { @WebMethod public String test(String value) { return value; //returned as XML. JSON possible? } } 显然,按照上面的说明是可能的 总结: @BindingType(JSONBindi
jax-ws
soap-webservice
是否可能输出json
格式而不是xml
@Component
@WebService
public class HRSService {
@WebMethod
public String test(String value) {
return value; //returned as XML. JSON possible?
}
}
显然,按照上面的说明是可能的 总结:
@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";
}
}
您只需在WEB-INF/lib
中使用jaxws-json.jar
,即可实现此功能
我希望有帮助 这太晚了。我最近又回到了Java编程,但是对于那些将来将访问此页面的人来说。JAXWS metro文档中的示例仅适用于javascript。我将以下内容与JSONObject一起使用:
@WebServiceProvider
@ServiceMode(value = Service.Mode.MESSAGE)
@BindingType(value=HTTPBinding.HTTP_BINDING)
然后实现提供者(数据源),如示例所示:
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();
}
公共类clazz实现提供程序
{ ...
@凌驾
公共数据源调用(数据源参数)
{
...
字符串emsg=“请求参数错误。”;
字符串sret=创建错误响应(emsg);
返回getDataSource(sret);
}
}
私有数据源getDataSource(字符串sret)
{
ByteArrayDataSource ds=新的ByteArrayDataSource(sret.getBytes(),“application/json”);
返回ds;
}
公共字符串创建错误响应(字符串消息)
{
JSONObject json=新的JSONObject();
put(“success”,新布尔值(false));
json.put(“message”,msg);
返回json.toString();
}
我不这么认为。SOAP协议有许多特性,例如WS-security。我不知道它能不能用JSON代替XML。当然,您可以编写一些REST服务,并根据需要进行编组。JAXB能够使用Moxy实现对JSON进行编组和解编。我不能说它将与相当高级别的@WebService
一起顺利工作,但对于@WebServiceProvider
,它应该非常简单。另一个选项是使用@WebService
。最终,如果您控制了JAXBContext,那么您应该能够将@Vadzim的这个可能的副本去掉。如果您建议重复,请确保这个问题确实有值得回答的答案(而不仅仅是链接答案)。我改变了投票的方向。