[英]how to send JS property Array to Jersey JAX-RS JSON based REST web service
我需要將JS字符串數組發送到服務器端,作為JS Object字段的一部分,例如:
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
prodImages為null時,正確設置了prodName。 Jersey是否將任何正確的JSON格式理解為有效的數組或字符串列表?
嘗試使用:
{“ prodName”:“ abc123”,“ prodImages”:[“ a1”,“ a2”,“ a3”]}
還包括以下依賴項:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
怎么樣:
RestClass:
@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
}
JAXBClass:
@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版后,它根據問題的解決方案解決了該問題:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.