2015-06-23 37 views
0

我需要JS字符串数组发送到服务器侧,作为诸如JS对象的字段的一部分:如何发送JS属性阵列泽西JAX-RS JSON基于REST web服务

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有理解为有效的数组或字符串列表吗?

+0

你试过使用Collection <>而不是[]。 (这就是我使用的) – Danielson

+0

默认的JSON提供者是Moxxy。也许尝试使用杰克逊,它应该没有问题,你在做什么。当移动到Jersey 2.X时,我尝试了Moxxy,并且我发现List必须被包装,Map 不被支持,等等。我用Jackon替换它,并且从来没有任何(de)序列化问题。 – Filip

+0

请参阅:https://jersey.java.net/documentation/latest/media.html#json.jackson – Filip

回答

0

尝试使用:

{ “个prodName”: “ABC123”, “prodImages”:[ “A1”, “A2”, “A3”]}

还包括以下依赖性:

<dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-moxy</artifactId> 
    </dependency> 
0

如何:

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 
} 
相关问题