爲什麼會JSON.stringify()
回報:JSON.stringify返回[]
[]
的情況與此相同的jQuery:$.JSON.encode()
這是什麼原因?我傳入一個簡單的對象數組,其中每個對象都有字符串屬性。我已經循環並提醒每個對象的屬性和所有看起來很好,但由於某種原因,兩種編碼方法返回[]
。
爲什麼會JSON.stringify()
回報:JSON.stringify返回[]
[]
的情況與此相同的jQuery:$.JSON.encode()
這是什麼原因?我傳入一個簡單的對象數組,其中每個對象都有字符串屬性。我已經循環並提醒每個對象的屬性和所有看起來很好,但由於某種原因,兩種編碼方法返回[]
。
在你的數組聲明
var count_review= new Array()
,而不是這個用
var count_review={};
它的作品!
如果您的數組聲明爲「字符串」的鍵值返回NULL
var array = [];
array['name'] = 'johan';
array['age'] = 20;
alert(JSON.stringify(array))// return []
但如果數組聲明爲「INT」返回JSON字符串
var array = [];
array[0] = 'johan';
array[1] = 20;
alert(JSON.stringify(array))// return["johan",20]
雖然上述回答是真實,充分理解它肯定需要更多的上下文。
JSON是一種通用格式(支持多種希望所有編程語言),它不完全是JavaScript對象的1對1映射。
所以造成這種情況的根本原因是在JSON中(如RFC 7159所指定的),在JavaScript的Array
意義上沒有關聯數組 - 即鍵的字符串爲數組的數組。在閱讀RFC規範可能會相當費時,可以最容易看到的JSON.org網站,它說的頂部(以下一些重點的是我):
JSON是建立在兩個結構:
- 名稱/值對的集合。在不同的語言中,這實現爲對象,記錄,結構,字典,哈希表,鍵列表,或關聯數組。
- 安有序列表值。在大多數語言,這被實現爲陣列,矢量,列表,或序列。
這些是通用數據結構。幾乎所有的現代編程語言都以不同的形式支持它們。有意義的是,與編程語言可互換的數據格式也基於這些結構。
在JSON,它們採取這些形式:
一種對象爲無序組名稱/值對。一個對象以
{
(左大括號)開頭,以}
(右大括號)結尾。每個名稱後跟:
(冒號),名稱/值對由,
(逗號)分隔。數組是值的有序集合。一個數組以
[
(左括號)開頭並以]
(右括號)結尾。值由,
(逗號)分隔。
的JSON.stringify
函數以這樣的方式,假設陣列旨在是一個數組,並且所有鍵控條目是註釋性,所以很象是函數對象元素處理此,他們只是拋出它返回的JSON表示之外。不幸的是,這種行爲沒有在今天(2017-09-04)的非官方JavaScript參考文件中以MDN明確定義且易於理解的方式記錄,因此如果您想幫助Mozilla瀏覽器,這裏是一些低下的成果。
'JSON.stringify([])===「[]」'。你的對象數組可能是空的。 – Gumbo
不需要爲空,但是不可枚舉的元素。 – evilpie
我解決了這個問題,它是字符串數組鍵。不能張貼我自己的答案另外8個小時。 – Chris