【发布时间】:2013-03-02 11:02:08
【问题描述】:
我正在编写一个应该接受类型 Object[] 的 Web 服务。通用性强,需要在不同场景下接受不同数量和类型的参数。
请求对象如下所示:
@XmlRootElement
public class SimilarityRequest {
private Object[] params;
private String similarity;
public Object[] getParams() {
return params;
}
public void setParams(Object[] params) {
this.params = params;
}
public String getSimilarity() {
return similarity;
}
public void setSimilarity(String similarity) {
this.similarity = similarity;
}
}
这是网络服务:
@SessionScoped
@Path("/similarity/")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Stateful
@StatefulTimeout(600000) // 10 minutes
public class SimilarityResource {
@POST
@Path("/")
public List<SimilarityResult> universalSimilarity(JAXBElement<SimilarityRequest> sr) {
Object[] params = sr.getValue().getParams();
String similarity = sr.getValue().getSimilarity();
}
}
我不知道在这种情况下它接受什么 json 作为参数?我试过"params":{5,10} 和"params":{"0":5,"1":10} 以及"params":[5,10]。有些东西会抛出 500 和 400 (错误的请求)。有什么想法吗?
【问题讨论】:
-
请提供有关您的服务的更多详细信息,例如它是基于 SOAP 的服务还是 RESTful 服务。
-
我添加了 WS 代码。它的 RESTful
-
您使用的是泽西岛吗?在这种情况下,您可以摆脱 JAXBElement 注释
-
不,我不是。对我的问题有帮助吗?
-
这行不通。您绝对没有向 JSON 库提供有关如何反序列化数据的任何提示。最好将整个事情解组为
Map<String, Object>并处理它。
标签: java json web-services jakarta-ee