我们正在根据一种简单的模板格式构建一个动态JSON有效载荷,该模板格式指示我们的有效载荷应该产生多少级别,例如“level1.level2”>将产生:
{
"level1": [
{
"level2": [
{
"someData": "willGoHere",
},
{
"someOtherData": "willAlsoGoHere"
}
]
}
]
}
显然我们正在使用不同的命名结构,例如:“client.ipcEvent.level3”,在某些情况下我们正在测试4个级别。我们做错了〜我们能够构建我们的javascript对象但是无法使用stringify()来创建完整的结果,因为对于我们的对象,stringify()有一些奇怪的原因只返回第一级的数据:
{ "level1": [] }
.
我已经尝试改变我们的对象加载值的方式,但它都返回到stringify()'drop'关闭在同一级别没有伴随属性/属性值的数组值。
问题是你的client
是一个数组,但是你在其上放置的属性不是数组条目(你可以这样做,因为数组是对象):
JSON.stringify
只包含数组的数组条目,而不包括其他属性:
const a = [];
a.nonEntryProperty = "foo";
a[0] = "bar";
console.log(JSON.stringify(a)); // ["bar"]
要确保数据正确序列化为JSON,请在对象中包含类似对象的属性,并在数组中包含数组条目:
const structure = {
info: {
nonEntryProperty: "foo"
},
array: ["bar"]
};
console.log(JSON.stringify(structure, null, 4));
好的,解决了;当它应该是对象时我们创建数组,反之亦然;抱歉这个模糊的问题,但谢谢TJ和塞巴斯蒂安。基于“level1.level2”的规范,解决方案是为“level1”创建对象{},为最后一个项目“level2”创建array [] ...