JAX-WS webservice 的 JSON 输出?

2022-09-04 04:54:28

是否有可能用 可以输出格式 而不是 ?jax-wssoap-webservicejsonxml

@Component
@WebService
public class HRSService {

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

答案 1

显然,按照 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.jarWEB-INF/lib

我希望它有帮助!


答案 2

这已经很晚了。我最近又回到了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();
}