gpt4 book ai didi

java - 从 Jquery 发送数组到 Struts1 方法

转载 作者:行者123 更新时间:2023-12-01 13:20:26 25 4
gpt4 key购买 nike

我的jsp和jquery代码为

var article = new Object();
article.title = "abc";
article.url = "abc";
article.categories = [1,2,3];
article.tags = [1,2,3];


console.log('hi');
$.ajax({
type: 'POST',
url: URL,
contentType:"application/json",
data: JSON.stringify(article),
dataType: 'json',
success: function(result) {
console.log(result);

},
error: function(e){
alert('Error in Processing');
}

});

我的java代码为

 BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));
String json = "";
if(br != null){
json = br.readLine();
}



// 2. initiate jackson mapper
ObjectMapper mapper = new ObjectMapper();
//mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

// 3. Convert received JSON to Article
Article article = mapper.readValue(json, Article.class);

现在我的 Arcticle 类(class)是

public class Article {

private String title;
private String url;
private List<String> categories;
private List<String> tags;

//getters and setters
}

现在我遇到了异常在行

String json = "";
if(br != null){
json = br.readLine();
}

我得到的json如下

{"title":"abc","url":"abc","categories":"[1, 2, 3]","tags":"[1, 2, 3]"}

其实应该是

{"title":"abc","url":"abc","categories":[1, 2, 3],"tags":[1, 2, 3]}

我不明白发生了什么因此我得到异常(exception)com.fasterxml.jackson.databind.JsonMappingException:无法从 VALUE_STRING token 中反序列化 java.util.ArrayList 的实例 在[来源:java.io.StringReader@f94ca;行:1,列:27](通过引用链:com.ihexa.common.admin.cabsharing.action.Article[“categories”])

I solved the answer in following way

文章用户 = mapper.readValue(point, Article.class);

System.out.println(user.getRouteFirst());

Gson gson = new Gson();

TypeToken> token = new TypeToken>(){}; 列表 personList = gson.fromJson(user.getRouteFirst(), token.getType());

Article class as

公开课文章{

private String routeFirst;
private String routeSecond;

//setter 和 getter

}

jsp jquery code as

var article = new Object();
article.routeFirst = newRoute1;
article.routeSecond = newRoute2;


$.ajax({
type: 'POST',
url: '../..//admin/cabsharing/findIntersesctionPoint.do',
data : "point="+JSON.stringify(article),
dataType: 'json',
success: function(result) {
console.log("success");
},
error: function(e){
console.log("error");
}

});

最佳答案

我的 jsp 将是,

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Calculator</title>
</head>
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script type="text/javascript">


$( document ).ready(function() {
//alert("DOM is ready");
});


function sendJsonData() {

var article = new Object();
article.title = "abc";
article.url = "abc";
article.categories = [1,2,3];
article.tags = [1,2,3];

//alert("JSON string :"+ JSON.stringify(article));

$.ajax({
type: 'POST',
url: "JsonServlet",
//contentType:"application/json",
//data: {point:point},
data : "point="+encodeURIComponent(JSON.stringify(article)),
dataType: 'json',
success: function(result) {

},
error: function(e){
//alert('Error in Processing');
}

});
}


</script>

<body>

<button id="jsonButton" onclick="sendJsonData()">send jdon Data</button>

</body>
</html>

我的 servlet 将是,

public class JsonServlet extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


String point = request.getParameter("point");
System.out.println("Point : " + point );

if(point != null){

ObjectMapper mapper = new ObjectMapper();

try {
// read from string, convert it to Article class object
Article user = mapper.readValue(point, Article.class);

// Conver the Article class object in to the JSON string
System.out.println("Output Json String is :::::::::::> "+mapper.writeValueAsString(user));


} catch (Exception e) {
e.printStackTrace();
}
}
}
}

这是我在控制台中得到的输出

Point : {"title":"abc","url":"abc","categories":[1,2,3],"tags":[1,2,3]}
Json String is :::::::::::> {"title":"abc","url":"abc","categories":["1","2","3"],"tags":["1","2","3"]}

希望这有帮助。

关于java - 从 Jquery 发送数组到 Struts1 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22062180/

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