解析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