我必须在这里失去了一些东西,但下面的代码(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