繁体   English   中英

如何将数组转换为正确的JSON?

[英]How to convert array to proper JSON?

我有这样的数组

product[0]['product_id']
product[0]['name']
....
product[1]['product_id']
product[1]['name']
...

当我使用JSON.stringify() ,我收到以下输出

{"0":{"product_id":"1","name":"ABC"},"1":{"product_id":"1","name":"ABC"},...}

但是,这不是我想要实现的,因为它不能保存数组。 相反,我希望JSON输出看起来像

[{"product_id":"1","name":"ABC"},{"product_id":"1","name":"ABC"},..]

我怎样才能做到这一点?

您需要确保product是数组而不是常规对象。 当我执行以下操作时

var product = []; // Array
product[0] = {product_id: 1, name: "name1"};
product[1] = {product_id: 2, name: "name2"};

然后JSON.stringify(product)产生

"[{"product_id":1,"name":"name1"},{"product_id":2,"name":"name2"}]"

这是您想要实现的。

我怀疑在您的情况下product是一个普通对象,这意味着product[0]访问该对象上名为0的属性,而不是数组中的第一个元素。 为了说明这一点,请考虑以下片段

var product = {}; // Plain JS object
product[0] = {product_id: 1, name: "name1"};
product[1] = {product_id: 2, name: "name2"};

在这种情况下,当我运行JSON.stringify(product)时,它将导致您得到输出

"{"0":{"product_id":1,"name":"name1"},"1":{"product_id":2,"name":"name2"}}"

如果您仍然遇到问题,则可能值得尝试此问题中提到的建议,该建议可以归结为添加

delete Array.prototype.toJSON;

在脚本的开头。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM