gpt4 book ai didi

javascript - 使用 Jackson 在 Javascript 和 Java 之间传输 JSON

转载 作者:太空宇宙 更新时间:2023-11-04 13:44:00 26 4
gpt4 key购买 nike

我想在浏览器 Javascript (JS) 和我的 Java servlet 之间传输可能较大的嵌套 JSON。我能够将 JSON 从 Java 传递到 JS,但不能从 JS 传递到 Java servlet。我收到错误:

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 对象。

感谢您的帮助!

布莱克·麦克布莱德

最佳答案

r对于服务器端,您尝试过Jersey的JSON支持吗?如果您使用 Maven,则可以 get you started .

@POST
@Path("/JavaScriptInterface")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Map<String,String> handlePost(Map<String,String> inData) {
Map<String,Object> dat = new HashMap<>();
dat.put("fname", "Tom");
dat.put("lname", "Jones");
dat.put("age", 36);
return dat;
}

同样对于客户端,您应该检查使用 jQuery。这是stack overflow answer .

 var data = JSON.stringify({name: 'dog'});
$.ajax({
type: "POST",
url: 'http://localhost:8084/MyApp/JavaScriptInterface',
dataType: 'json',
data: data,
success: function (responseData) {
// this prints out your data
console.log("successful", responseData);
}
})

关于javascript - 使用 Jackson 在 Javascript 和 Java 之间传输 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31040203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com