[英]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.