![](/img/trans.png)
[英]How to parse arraylist data sent from servlet into JSON in Jquery
[英]How to parse Javascript JSON array into ArrayList from Servlet
我有一个Angular JS函数,它将JSON数组发送到Java Servlet。 使用GSON类,我试图将该数组解析回String的ArrayList(或以后的另一个Class)。 不幸的是,看起来我得到的ArrayList为null。 有什么建议吗?
编辑:我忘记了request.getReader(),它现在可以工作了。
已发送的有效负载:
{"answers":["answer1","answer2"]}
Angular JS代码:
$scope.test = function() {
var answers = [];
answers.push('answer1');
answers.push('answer2');
$http({
method: 'POST',
url: '/test',
data: { answers: answers }
}).success(function(result) {
// RESULT IS NULL
}).error(function(result) {
});
};
Java Servlet代码:
Gson gson = new Gson();
JsonElement jsonElement = gson.fromJson(request.getReader(), JsonElement.class);
JsonObject jsonObject = jsonElement.getAsJsonObject();
ArrayList<String> answers = gson.fromJson(jsonObject.get("answers").getAsJsonArray(), new TypeToken<ArrayList<String>>(){}.getType());
您不能使用request.getParameter
来获取从Angular传递的JSON消息。 相反,您必须使用request.getReader
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonObject obj = (JsonObject) parser.parse(request.getReader());
现在,JsonObject将收到您发送的消息。 现在,您可以使用此obj将其转换为数组列表。
同样在您的Angular $ http帖子中,将数据设置为如下所示的answers
:
$http({
method: 'POST',
url: '/test',
data: JSON.stringify(answers)
}).success(function(result) {
// RESULT IS NULL
拥有JsonObject之后,可以使用它将其转换为ArrayList
ArrayList<String> listdata = new ArrayList<String>();
JSONArray jArray = (JSONArray)jsonObject;
if (jArray != null) {
for (int i=0;i<jArray.length();i++){
listdata.add(jArray.get(i).toString());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.