2012-03-03 33 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