解析JSON数组会导致错误
我有以下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是“[出现在字符串化的JSON中。
根据我的理解,这应该是一个非常简单而直接的事情。 我究竟做错了什么?
编辑:我认为它可能与JSON.stringify()
行为与Javascript数组的字符串。
JSON.stringify(o)
返回:
"{"username":"username","args":"["1", "2", "3"]"}"
普通的JavaScript数组被设计为用数字索引保存数据。 尝试使用Object而不是数组。
尝试使用下面的代码来构建对象并检查输出:
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);
我认为你的stringify结果中有太多的引号。 当我构造这样的对象时:
var o = {
username: "username",
args: ["1","2","3"]
};
调用JSON.stringify(o)
这是
"{"username":"username","args":["1","2","3"]}"
注意我的方括号周围没有引号。
链接地址: http://www.djcxy.com/p/8071.html上一篇: parsing JSON array gives error
下一篇: Do I need Content