将 json 数组解析为 java 字符串数组

Parse json array to java string array

我正在构建一个 bootstrap 多 select 工具,如下所示:

Multiselect tool

multiselect 工具中的 selected 值首先转换为 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 字符串数组并不是我想要的。例如,如果我在 multiselect 工具中 select "author1" 和 "author2":

我应该得到的预期字符串数组:

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

我实际得到的字符串:

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

如果我只是 select multiselect 工具中的一个选项,例如 "author"。在 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(",")将字符串转换为字符串数组。