2012-03-03 36 views
0

的输入实体的Java +球衣名单,我需要接受JSON实体的名单输入到我的WS。在web服务

这里我实体定义:

@XmlRootElement 
public class ContactClass { 
    public String action; 
    public Long userId; 
    public String phone; 
    public String fbId; 
} 

这里我WS函数定义:

@PUT 
@Path("/{userId}/adBook") 
public String synchAdBookContacts(@PathParam("userId") Long userId, ArrayList<ContactClass> contacts) 

删除的ArrayList <>它工作正常,但我需要ContactClass数组作为输入。

你能帮助我吗?

谢谢!

更新: 最后,我找到了解决办法,在这里,已经解决了我的问题的文章: https://blogs.oracle.com/japod/entry/missing_brackets_at_json_one

回答

1

豆1:

@XmlRootElement 
public class Contact { 
    private String name; 
    private String phoneNumber; 


// Getters, setters, default constructor 
} 

豆2:

@XmlRootElement 
public class Contacts { 
    private List<Contact> contacts; 

    //Getter for contacts 
    @XMLElement(name = "listContacts") 
    public List<Contact> getContacts() { 
.... 


// Getters, setters, default constructor 
} 

您的Json FIEL应具有以下格式:

"listContacts":[{"json for contact1"},{"json for contact2"},{"json for contact3"}...] 

你的资源:

@PUT 
@Path("/{userId}/adBook") 
public String synchAdBookContacts(@PathParam("userId") Long userId, Contacts contacts) { 
//Here you can get your contacts contacts. 
0

反序列化到一个列表应该只是罚款。下面的代码工作与RestEasy的+杰克逊:

豆:

@XmlRootElement 
public class Contact implements Serializable { 
    private static final long serialVersionUID = 2075967128376374506L; 

    private String name; 
    private String phoneNumber; 

    // Getters, setters, default constructor 
} 

资源:

@Path("/othertest") 
public class AnotherTestResource { 

    @POST 
    @Path("/list/{id}") 
    @Produces("application/json") 
    @Consumes("application/json") 
    public Response requestWithList(@PathParam("id") String id, 
     List<Contact> contacts) { 
     return Response.ok("Hello World: " + contacts.size()).build(); 
    } 
} 
+0

仍然无法工作......同样的问题....客户端发送_The请求是语法不正确的(错误请求)._这里的有效载荷:'[{“行动”:“添加”,“用户id”:120 , “手机”: “322222”},{ “动作”: “添加”, “用户id”:120, “手机”: “222211112”}]' – Bagbyte 2012-03-04 13:46:29

0

诠释你的synchAdBookContacts法@Consumes( “应用/ JSON”)应该这样做。你正在使用哪种JAX-RS实现,你到底在做什么错误?

+0

我使用的是新泽西州,消耗正确设置 我得到一个状态400 - 错误请求(客户端发送的请求在语法上不正确(错误请求)。) – Bagbyte 2012-03-07 15:46:31