Web服务接受对象[]。它接受什么JSON?

时间:2013-03-02 11:02:09

标签: java json web-services java-ee

我正在编写一个应该接受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;
    }

}

这是WebService:

@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();

    }


}

我不知道在这种情况下它接受params的json是什么?我尝试了"params":{5,10}"params":{"0":5,"1":10}以及"params":[5,10]。什么东西抛出500和400东西(坏请求)。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我已经使用Jersey成功实现了该服务,代码是相同的,我刚刚删除了 JAXBElement 包装器和 @XmlRootElement 注释。 WEB-INF.xml文件必须包含包含 SimilarityRequest 类的文件夹 com.sun.jersey.config.property.packages 参数部分和 com.sun.jersey.api.json.POJOMappingFeature 参数必须为true。 该服务正确接收以下json:

  

{“相似性”:“测试”,“参数”:[5,10]}

对象数组包含两个Integer值。