我有一些RESTful服务和一些方法。方法由@POST
和@Consumes(MediaType.APPLICATION_JSON)
注释。
我有请求参数的包装器:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class RequestWrapper {
@XmlElement
private SomeInfo someInfo = new SomeInfo();
@XmlElement
@XmlElementWrapper
private List<RequestParameter> requestParameters = new ArrayList<>();
}
public class SomeInfo {
public String field1;
public String field2;
}
public class RequestParameter {
public String key;
public String value;
}
我向我的服务提出请求。 POST消息正文:
{"someInfo":{"field1":"b","field2":"c"},"requestParameters":[{"key":"1","value":"2"},{"key":"3","value":"4"}]}
我看到someInfo
值已通过RequestWrapper处理和访问。但是List<RequestParameter> requestParameters
的长度为零。
我应该如何正常处理邮件?
P.S。 我使用Glassfish 4.0。 maven模块的依赖关系:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-processing</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
答案 0 :(得分:2)
omg,我找到了魔术弹
删除@XmlAccessorType(XmlAccessType.FIELD)
删除@XmlElementWrapper
为每个字段制作公共getter / setter
@XmlRootElement
public class RequestWrapper {
@XmlElement
private SomeInfo someInfo = new SomeInfo();
@XmlElement
private List<RequestParameter> requestParameters = new ArrayList<>();
// getters/setters for each field
}