簡體   English   中英

解析JSON數組給出錯誤

[英]parsing JSON array gives error

我有以下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中出現。

據我了解,這應該是一件非常簡單明了的事情。 我究竟做錯了什么?

編輯:我認為這可能與Javascript字符串數組的JSON.stringify()行為有關。

JSON.stringify(o)返回:

"{"username":"username","args":"[\"1\", \"2\", \"3\"]"}"

普通的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);

我認為串化結果中的引號過多。 當我像這樣構造對象時:

 var o = {
            username: "username",
            args: ["1","2","3"]
        };

調用JSON.stringify(o)

這是

"{\"username\":\"username\",\"args\":[\"1\",\"2\",\"3\"]}"

請注意,方括號中沒有引號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM