首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON.stringify返回[]

JSON.stringify返回[]
EN

Stack Overflow用户
提问于 2011-08-31 23:48:57
回答 4查看 51.7K关注 0票数 69

为什么JSON.stringify()会返回:

代码语言:javascript
复制
[]

同样的事情也发生在jQuery上:$.JSON.encode()

是什么导致了这种情况?我传入了一个简单的对象数组,其中每个对象都有字符串属性。我已经遍历并警告了每个对象的属性,看起来一切正常,但是由于某种原因,两个encode方法都返回了[]

EN

回答 4

Stack Overflow用户

发布于 2013-01-04 21:02:46

在数组声明中

代码语言:javascript
复制
var count_review= new Array() 

而不是这个用法

代码语言:javascript
复制
var count_review={}; 

它起作用了!

票数 78
EN

Stack Overflow用户

发布于 2015-06-10 22:14:55

如果您的数组使用stringify键值,而不是int,则stringify将忽略该值。

代码语言:javascript
复制
var array = [];
array['name'] = 'johan';
array['age'] = 20;
alert(JSON.stringify(array))// return []

但是如果数组使用"int“作为键,那么stringify将返回它。

代码语言:javascript
复制
var array = [];
array[0] = 'johan';
array[1] = 20;
alert(JSON.stringify(array))// return["johan",20]
票数 30
EN

Stack Overflow用户

发布于 2017-09-04 17:32:30

虽然上面的答案是正确的,但要完全理解它,肯定需要更多的上下文。

JSON是一种通用格式(从支持多种编程语言的意义上讲,希望是所有编程语言),它并不完全是JavaScript对象的一对一映射。

因此,发生这种情况的根本原因是,在JSON中(由RFC 7159指定),在JavaScript的Array意义上没有关联数组--即键是字符串的数组。由于阅读RFC规范可能相当耗时,在JSON.org网站的顶部可以很容易地看到它(下面的一些重点是我的):

JSON构建在两种结构之上:

  • 名称/值对的集合。在各种语言中,这被实现为对象、记录、结构、字典、哈希表、键值列表或关联array.
  • An有序值列表。在大多数语言中,这被实现为数组、向量、列表或序列。

这些是通用的数据结构。几乎所有现代编程语言都以这样或那样的形式支持它们。可与编程语言互换的数据格式也基于这些结构,这是有意义的。

在JSON中,它们采用以下形式:

对象是名称/值对的无序集合。对象以{ (左大括号)开头,以} (右大括号)结束。每个名称后跟: (冒号),名称/值对由, (逗号)分隔。

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

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

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7259728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档