Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAX-WS Web服务的JSON输出?_Java_Json_Spring_Cxf_Jax Ws - Fatal编程技术网

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的这个可能的副本去掉。如果您建议重复,请确保这个问题确实有值得回答的答案(而不仅仅是链接答案)。我改变了投票的方向。