解析json数组到java字符串数组

Parse json array to java string array

本文关键字:数组 字符串 java 解析 json      更新时间:2023-09-26

我正在构建一个像这样的引导多选工具:

多选工具

在多选工具中选择的值首先被转换成一个javascript数组,像这样:

var authors = [];
$("#selectAuthors option:selected").each(function(i, value) {
    authors.push($(this).val());
});

然后这个数组通过ajax传递给servlet:

$.ajax({
    method : "POST",
    url : "../addBook",
    data : {
        addTitle : $("#addTitle").val(),
        addPublisher : $("#selectPublisher").val(),
        addAuthors : JSON.stringify(authors),
    }
})

在servlet中,数组被解析为java字符串数组:

String[] authorNames = request.getParameterValues("addAuthors");

问题是,我在servlet中得到的java字符串数组不是我想要的。例如,如果我在多选工具中选择"author1"answers"author2":

期望得到的字符串数组:

{"author1", "author2"}, string length: 2

我实际得到的字符串:

{"["author1", "author2"]"}, string length: 1

如果我只在多选工具中选择一个选项,比如"作者"。在servlet中,我将得到如下内容:

Print out authorNames[0]: ["author"]
Print out authorNames[0].length: 10  
//The legnth of "author" is 6, but the length of "["author"]" is 10
你能解释一下我哪里做错了吗?

我先将"authors"解析为字符串,然后在servlet中使用string.split(",")将字符串转换为字符串数组。