2010-08-08 214 views
0

我試着通過使用傑克遜JavaScript來的Java Servlet數組傳球達陣從JavaScript到Java Servlet的,這可怎麼done..thanks使用傑克遜

回答

2

的基本思路應該是直截了當:

服務器:

doPost(HttpServletRequest req, HttpServletResponse resp) 
{ 
    ObjectMapper mapper = new ObjectMapper(); 
    ArrayNode rootNode = mapper.readValue(req.getReader(), ArrayNode.class); 
} 

客戶:

使用jQuery(你也可以與其他框架做,或手動)。加載json2.js的副本以確保您有JSON.stringify。

jQuery.ajax({ 
    type: 'POST', 
    url: servletURL, 
    data: JSON.stringify(jsArray), 
    dataType: 'json', 
    contentType: 'application/json' 
}); 
+0

感謝matthew的回覆...即時通訊使用YUI 3,數組到達servlet和一切正常,但我需要從請求中獲取正確的參數。 我用req.getParameter(「myArray」)替換了req.getReader(),但仍然不能正常工作 – 2010-08-08 09:06:18

+0

沒關係...它的工作我使用了req.getParameterValues(「myArray」),感謝幫助 – 2010-08-08 09:13:35

+0

@Mohammed,如果你使用'getParameterValues',你可能不使用JSON。你很可能有一個常規的GET查詢字符串。 – 2010-08-08 09:20:52

0

對於傳遞數組從瀏覽器到服務器端,您不需要傑克遜。你只需要Ajax。例如,使用jQuery你可以這樣來做:

$.ajax({ 
    url: 'your servlet url', 
    data: yourArray 
}); 

然後在服務器端,您可能希望將JSON反序列化爲一個JavaBean,或者在你的情況下,使用傑克遜java.util.List。你可以做到這一點是這樣的:

ObjectMapper mapper = new ObjectMapper(); 
List array = mapper.readValue(jsonText, List.class); 

jsonText包含從瀏覽器發送到服務器端的yourArray String表示。

+0

您的客戶端代碼以查詢字符串格式發送數據,而不是JSON。 – 2010-08-08 08:40:06