我有以下Javascript对象:
var o = {
"username":"username",
"args": [
"1", "2", "3"
]
};然后像这样发送:
xhr.send(JSON.stringify(o));我的java类:
public class Command implements Serializable {
private String username;
private String[] args;
//getters, setters constructors etc.
}在我的servlet中:
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response){
Command c;
try {
c = gson.fromJson(request.getReader(), Command.class);
} catch(Exception e) {
.
.
.给出错误:Expected BEGIN_ARRAY but was STRING at line 1 column X,其中列号X是"[出现在stringified JSON中的位置。
据我所知,这应该是一件非常简单和直接的事情。我做错了什么?
编辑:我认为这可能与Javascript字符串数组的JSON.stringify()行为有关。
JSON.stringify(o)返回:
"{"username":"username","args":"[\"1\", \"2\", \"3\"]"}"发布于 2014-08-21 18:42:07
普通的JavaScript数组是用来保存带有数字索引的数据的。尝试使用对象而不是数组。
尝试使用以下代码构造对象,并检查输出:
var o = {}; // Object
o['username'] = 'username';
o['args'] = []; // Array
o['args'].push('1');
o['args'].push('2');
o['args'].push('3');
var json = JSON.stringify(o);
alert(json);https://stackoverflow.com/questions/25423883
复制相似问题