首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解析JSON数组时出现错误

解析JSON数组时出现错误
EN

Stack Overflow用户
提问于 2014-08-21 18:22:33
回答 2查看 6.5K关注 0票数 0

我有以下Javascript对象:

代码语言:javascript
运行
复制
var o = {
      "username":"username",
      "args": [
          "1", "2", "3"
      ]
};

然后像这样发送:

代码语言:javascript
运行
复制
xhr.send(JSON.stringify(o));

我的java类:

代码语言:javascript
运行
复制
public class Command implements Serializable {
    private String username;
    private String[] args;
    //getters, setters constructors etc.
}

在我的servlet中:

代码语言:javascript
运行
复制
@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)返回:

代码语言:javascript
运行
复制
"{"username":"username","args":"[\"1\", \"2\", \"3\"]"}"
EN

回答 2

Stack Overflow用户

发布于 2014-08-21 18:42:07

普通的JavaScript数组是用来保存带有数字索引的数据的。尝试使用对象而不是数组。

尝试使用以下代码构造对象,并检查输出:

代码语言: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);
票数 1
EN

Stack Overflow用户

发布于 2014-08-26 01:43:40

我认为你的stringify结果中有太多的引号。当我像这样构造对象时:

代码语言:javascript
运行
复制
 var o = {
            username: "username",
            args: ["1","2","3"]
        };

调用JSON.stringify(o)的结果

是这个吗

代码语言:javascript
运行
复制
"{\"username\":\"username\",\"args\":[\"1\",\"2\",\"3\"]}"

请注意,我的方括号周围没有引号。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25423883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档