JSON.stringify(对象)不正确

5 javascript arrays json object

抱歉我的上一个问题太混乱了,我很困惑自己,但现在我得到了一个正确的例子:

var obj = {};
obj.entities = [];
obj.entities["player"] = [];
obj.entities["player"]["0"] = [];
obj.entities["player"]["0"]["pos"] = "0,0";

var jsonStr = JSON.stringify(jsonObj);

// {"entities":[]}
console.log(JSON.stringify(obj));
Run Code Online (Sandbox Code Playgroud)

JSON.stringify(obj)您可以看到输出错误.是什么导致这个?

pim*_*vdb 12

您首先构建一个数组([]),然后使用非数字键(player)为其分配属性.这在技术上是可行的(因为不会导致错误),但它不是数组的用途.

您应该使用objects({}).另外,["player"]是一样的.player.

var obj = {};
obj.entities = {};
obj.entities.player = []; // array here because you're filling with indices ([0])
obj.entities.player[0] = {}; // object again, because non-indices as keys (`pos`)
obj.entities.player[0].pos = "0,0";
Run Code Online (Sandbox Code Playgroud)

对象可以使用任何属性键.数组是对象的子集,它应该只有索引(数字>= 0)作为键.