JSON的JavaScript关联数组

JSON的JavaScript关联数组,javascript,json,associative-array,Javascript,Json,Associative Array,如何将JavaScript关联数组转换为JSON 我尝试了以下方法: var AssocArray = new Array(); AssocArray["a"] = "The letter A" console.log("a = " + AssocArray["a"]); // result: "a = The letter A" JSON.stringify(AssocArray); // result: "[]" 数组应该只有带有数字键的条目(数组也是对象,但不应该混合使用) 如

如何将JavaScript关联数组转换为JSON

我尝试了以下方法:

var AssocArray = new Array();

AssocArray["a"] = "The letter A"

console.log("a = " + AssocArray["a"]);

// result: "a = The letter A"

JSON.stringify(AssocArray);

// result: "[]"

数组应该只有带有数字键的条目(数组也是对象,但不应该混合使用)

如果将数组转换为JSON,该过程将只考虑数值属性。其他属性被忽略,这就是为什么会得到一个空数组。如果查看数组的
长度
,这一点可能会更加明显:

> AssocArray.length
0
通常所称的“关联数组”实际上只是JS中的一个对象:

var AssocArray = {};  // <- initialize an object, not an array
AssocArray["a"] = "The letter A"

console.log("a = " + AssocArray["a"]); // "a = The letter A"
JSON.stringify(AssocArray); // "{"a":"The letter A"}"

var-AssocArray={};// JavaScript中没有关联数组。但是,有些对象具有命名属性,因此不要使用
新数组初始化“数组”
,这样它就会成为一个通用对象。

您可能需要将该对象推入数组中

enter code here

var AssocArray = new Array();

AssocArray.push( "The letter A");

console.log("a = " + AssocArray[0]);

// result: "a = The letter A"

console.log( AssocArray[0]);

JSON.stringify(AssocArray);
我发布了一个修复程序

您可以使用此函数修改
JSON.stringify
来编码
数组
,只需将其贴在脚本开头附近即可(查看上面的链接了解更多详细信息):


同意将对象保持为对象,将数组保持为数组可能是最佳做法。但是,如果您有一个具有命名属性的对象,并将其视为数组,则可以使用以下方法:

let tempArr = [];
Object.keys(objectArr).forEach( (element) => {
    tempArr.push(objectArr[element]);
});

let json = JSON.stringify(tempArr);

不正确;数组也是对象
Json.stringify
忽略数组的非数组属性。@SLaks:我从来没有说过数组不是对象;)我只是说不能将数组用作关联数组(好吧,也许可以,因为它们是对象,但我认为这会变得非常丑陋和混乱,最终你要为宇宙的崩溃负责…)。澄清一下答案:当你初始化它时,使用
{}
新对象()
,而不是
[]
新数组()
@Thymine的评论最有价值!注意如何在javascript中初始化数据。使用{}(!!!)谢谢,简单有效!这其中的哪一部分定义了关联数组?
let tempArr = [];
Object.keys(objectArr).forEach( (element) => {
    tempArr.push(objectArr[element]);
});

let json = JSON.stringify(tempArr);