gpt4 book ai didi

java - 如何将 Javascript JSON 数组从 Servlet 解析为 ArrayList

转载 作者:行者123 更新时间:2023-11-30 08:02:24 24 4
gpt4 key购买 nike

我有一个 Angular JS 函数,它将 JSON 数组发送到 Java Servlet。使用 GSON 类,我尝试将该数组解析回 String 的 ArrayList (或稍后的另一个类)。不幸的是,我得到的 ArrayList 似乎为空。有什么建议吗?

编辑:我忘记了 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());
}
}

关于java - 如何将 Javascript JSON 数组从 Servlet 解析为 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31694316/

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