我必須在這裏失去了一些東西,但下面的代碼(Fiddle)返回一個空字符串工作:JSON.stringify不正常的Javascript數組
var test = new Array();
test['a'] = 'test';
test['b'] = 'test b';
var json = JSON.stringify(test);
alert(json);
什麼是JSON'ing本的正確方法陣列?
我必須在這裏失去了一些東西,但下面的代碼(Fiddle)返回一個空字符串工作:JSON.stringify不正常的Javascript數組
var test = new Array();
test['a'] = 'test';
test['b'] = 'test b';
var json = JSON.stringify(test);
alert(json);
什麼是JSON'ing本的正確方法陣列?
普通的JavaScript陣列設計與數字索引保存數據。您可以命名的東西上鍵向他們(當你想存儲有關保持正常的數組元這可能是有用的,有序的,數字索引數據),但是這不是他們所設計的。 JSON數組數據類型不能命名陣列上的按鍵。
如果你想命名的鍵,使用對象,而不是一個數組。
var test = {}; // Object
test['a'] = 'test';
test['b'] = []; // Array
test['b'].push('item');
test['b'].push('item2');
test['b'].push('item3');
var json = JSON.stringify(test);
alert(json);
我張貼這種here
修復您可以使用此功能來修改JSON.stringify
編碼arrays
,只是張貼在接近腳本的開始(檢查上面的鏈接,更詳細):
// Upgrade for JSON.stringify, updated to allow arrays
(function(){
// Convert array to object
var convArrToObj = function(array){
var thisEleObj = new Object();
if(typeof array == "object"){
for(var i in array){
var thisEle = convArrToObj(array[i]);
thisEleObj[i] = thisEle;
}
}else {
thisEleObj = array;
}
return thisEleObj;
};
var oldJSONStringify = JSON.stringify;
JSON.stringify = function(input){
if(oldJSONStringify(input) == '[]')
return oldJSONStringify(convArrToObj(input));
else
return oldJSONStringify(input);
};
})();
尼斯說明和示例的上方。我發現這個(JSON.stringify() array bizarreness with Prototype.js)完成了答案。有些網站使用JSONFilters實現自己的toJSON,所以刪除它。
if(window.Prototype) {
delete Object.prototype.toJSON;
delete Array.prototype.toJSON;
delete Hash.prototype.toJSON;
delete String.prototype.toJSON;
}
正常工作和測試的輸出:
console.log(json);
結果:
"{"a":"test","b":["item","item2","item3"]}"
我有一個網站一些問題,覆蓋日期,所以當我用Date.toJSON失敗我,所以我說:Date.prototype.toJSON = Date.prototype.toISOString; – 2014-09-16 13:05:10
JSON有有鍵值對。你仍然可以有一個數組作爲價值部分。因此添加的chousing的 「鑰匙」:
變種JSON = JSON.stringify({whatver:測試});
這只是錯誤的。 'JSON.stringify([15,12])'將起作用。它會給''[15,12]「' – devnull69 2015-05-19 12:24:23
或者,你可以使用這樣
var test = new Array();
test[0]={};
test[0]['a'] = 'test';
test[1]={};
test[1]['b'] = 'test b';
var json = JSON.stringify(test);
alert(json);
這樣你JSON-ING一個陣列。
這不是一個數組,你只是設置了兩個屬性 – 2013-04-24 15:43:10
[JavaScript關聯數組到JSON]的可能重複(http://stackoverflow.com/questions/4425289/javascript-associative-array-to-json) – 2013-04-24 15:43:29
開始出用'VAR測試= {};'而不是 – Ian 2013-04-24 15:43:38