Я хочу перенести потенциально большой, вложенный JSON между браузером Javascript (JS) и моим сервлетом Java. Я могу передавать JSON с Java на JS, но не с JS на Java-сервлет. Я получаю сообщение об ошибке:Передача JSON в/из Javascript и Java с помощью Jackson
Can not deserialize instance of java.util.LinkedHashMap out of START_ARRAY token
Кроме того, я не уверен, что перехожу из Java в JS правильно. Вот мой JS код:
var xmlhttp;
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var response = JSON.parse(xmlhttp.responseText);
var x = 1;
}
}
xmlhttp.open("POST", 'http://localhost:8084/MyApp/JavaScriptInterface', true);
xmlhttp.setRequestHeader("Content-type","application/json");
xmlhttp.send({name: 'dog'});
Вот мой Java код:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
ObjectMapper mapper = new ObjectMapper();
// get data passed in
@SuppressWarnings("unchecked")
Map<String,Object> inData = mapper.readValue(request.getInputStream(), Map.class);
// send data
response.setContentType("application/json");
Map<String,Object> dat = new HashMap<>();
dat.put("fname", "Tom");
dat.put("lname", "Jones");
dat.put("age", 36);
PrintWriter out = response.getWriter();
mapper.writeValue(out, dat);
}
Я думаю, что есть более чем один способ сделать это, но я должен быть в состоянии поддерживать больше, вложенные объекты JSON ,
Спасибо за помощь!
Blake McBride