为什么JSON.stringify()会返回:
[]同样的事情也发生在jQuery上:$.JSON.encode()
是什么导致了这种情况?我传入了一个简单的对象数组,其中每个对象都有字符串属性。我已经遍历并警告了每个对象的属性,看起来一切正常,但是由于某种原因,两个encode方法都返回了[]。
发布于 2013-01-04 21:02:46
在数组声明中
var count_review= new Array() 而不是这个用法
var count_review={}; 它起作用了!
发布于 2015-06-10 22:14:55
如果您的数组使用stringify键值,而不是int,则stringify将忽略该值。
var array = [];
array['name'] = 'johan';
array['age'] = 20;
alert(JSON.stringify(array))// return []但是如果数组使用"int“作为键,那么stringify将返回它。
var array = [];
array[0] = 'johan';
array[1] = 20;
alert(JSON.stringify(array))// return["johan",20]发布于 2017-09-04 17:32:30
虽然上面的答案是正确的,但要完全理解它,肯定需要更多的上下文。
JSON是一种通用格式(从支持多种编程语言的意义上讲,希望是所有编程语言),它并不完全是JavaScript对象的一对一映射。
因此,发生这种情况的根本原因是,在JSON中(由RFC 7159指定),在JavaScript的Array意义上没有关联数组--即键是字符串的数组。由于阅读RFC规范可能相当耗时,在JSON.org网站的顶部可以很容易地看到它(下面的一些重点是我的):
JSON构建在两种结构之上:
这些是通用的数据结构。几乎所有现代编程语言都以这样或那样的形式支持它们。可与编程语言互换的数据格式也基于这些结构,这是有意义的。
在JSON中,它们采用以下形式:
对象是名称/值对的无序集合。对象以{ (左大括号)开头,以} (右大括号)结束。每个名称后跟: (冒号),名称/值对由, (逗号)分隔。

数组是值的有序集合。数组以[ (左括号)开头,以] (右括号)结束。值之间用, (逗号)分隔。

JSON.stringify函数以这样的方式处理这个问题:假设数组是一个数组,并且所有键值条目都是注释性的,因此就像是函数对象的元素一样,它们只是被抛出它返回的JSON表示。不幸的是,到目前为止(2017-09-04),在非官方的JavaScript参考中,这种行为并没有以一种定义良好且易于理解的方式记录下来,所以如果你想帮助MDN,这里有一些容易摘到的果实。
https://stackoverflow.com/questions/7259728
复制相似问题