我有以下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);
发布于 2014-08-26 01:43:40
我认为你的stringify结果中有太多的引号。当我像这样构造对象时:
var o = {
username: "username",
args: ["1","2","3"]
};
调用JSON.stringify(o)
的结果
是这个吗
"{\"username\":\"username\",\"args\":[\"1\",\"2\",\"3\"]}"
请注意,我的方括号周围没有引号。
https://stackoverflow.com/questions/25423883
复制相似问题