如何将 JS 属性 数组发送到基于 Jersey JAX-RS JSON 的 REST Web 服务
how to send JS property Array to Jersey JAX-RS JSON based REST web service
我需要将一个 JS 字符串数组发送到服务器端,作为 JS 对象字段的一部分,例如:
JSON:
{prodName: "abc123", prodImages: ["a1", "a2", "a3"]}
我正在使用 Jersey JAX-RS 来使用 JSON 输入。
在我的服务器端代码中,我有:
Web 服务方法签名:
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("/delete")
public void deleteMethod(ProdListVO prodListDeleteVO) //...
JAX-B 对象:
@XmlRootElement
public class ProdListVO {
private String prodName;
private String[] prodImages;
// ... getters and setters
prodName 设置正确,而 prodImages 为空。是否有 Jersey 理解为有效数组或字符串列表的适当 JSON 格式?
尝试使用:
{ "prodName": "abc123", "prodImages": ["a1", "a2", "a3"]}
还包括以下依赖项:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
怎么样:
休息类:
@DELETE
@Consumes(MediaType.APPLICATION_XML)
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("/delete")
public Response callMokuSimple(final JAXBElement<ProdListVO> prodListDeleteVO) {
ProdListVO prodList = prodListDeleteVO.getValue();
// more code
}
JAXB 类:
@XmlAccessorType(XmlAccessType.FIELD)//lets you decide the fields
@XmlRootElement(name="algorithm")
public class Algorithm implements Serializable{
private static final long serialVersionUID = -1L;
@XmlElement(name="prodName")//name of field
private String prodName = null;
@XmlElement(name="prodImages")//name of other field
private String [] prodImages = null;
//getter and setters
}
将 EclipseLink JAXB Moxy 升级到版本 2.6 后,它解决了基于问题解决方案的问题:
Moxy, JSON and Jersey 2.0 does not deserialize plain String array
我需要将一个 JS 字符串数组发送到服务器端,作为 JS 对象字段的一部分,例如:
JSON:
{prodName: "abc123", prodImages: ["a1", "a2", "a3"]}
我正在使用 Jersey JAX-RS 来使用 JSON 输入。 在我的服务器端代码中,我有:
Web 服务方法签名:
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("/delete")
public void deleteMethod(ProdListVO prodListDeleteVO) //...
JAX-B 对象:
@XmlRootElement
public class ProdListVO {
private String prodName;
private String[] prodImages;
// ... getters and setters
prodName 设置正确,而 prodImages 为空。是否有 Jersey 理解为有效数组或字符串列表的适当 JSON 格式?
尝试使用:
{ "prodName": "abc123", "prodImages": ["a1", "a2", "a3"]}
还包括以下依赖项:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
怎么样:
休息类:
@DELETE
@Consumes(MediaType.APPLICATION_XML)
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Path("/delete")
public Response callMokuSimple(final JAXBElement<ProdListVO> prodListDeleteVO) {
ProdListVO prodList = prodListDeleteVO.getValue();
// more code
}
JAXB 类:
@XmlAccessorType(XmlAccessType.FIELD)//lets you decide the fields
@XmlRootElement(name="algorithm")
public class Algorithm implements Serializable{
private static final long serialVersionUID = -1L;
@XmlElement(name="prodName")//name of field
private String prodName = null;
@XmlElement(name="prodImages")//name of other field
private String [] prodImages = null;
//getter and setters
}
将 EclipseLink JAXB Moxy 升级到版本 2.6 后,它解决了基于问题解决方案的问题:
Moxy, JSON and Jersey 2.0 does not deserialize plain String array