在js中,js變數和JSON是兩個不同數據格式,兩者的儲存方式自然不相同。JSON格式是一種數據交換的規則,js變數則是javascript在程式需求場景中的數據表示。在js與不同語言的服務端進行數據交換過程中,js能夠有內置的方法將其變數轉化為JSON格式。 JSON.parse(data);// ...
在js中,js變數和JSON是兩個不同數據格式,兩者的儲存方式自然不相同。JSON格式是一種數據交換的規則,js變數則是javascript在程式需求場景中的數據表示。在js與不同語言的服務端進行數據交換過程中,js能夠有內置的方法將其變數轉化為JSON格式。
JSON.parse(data);//JSON解碼
JSON.stringify(data);//JSON編碼
但是對於JS數組而言,如果需要在之後需要進行JSON格式化,那麼在初始化時不能用new Array(),應該使用‘{}’將其初始化。
var data = new Array();
data['password'] = '123456789';
data['account'] = 'wdnmdJS';
JSON.stringify(data);
這樣數據經過JSON編碼後會得到一個空值null
正確的方法如下:
var data = {};
data['password'] = '123456789';
data['account'] = 'wdnmdJS';
JSON.stringify(data);
關於其中的原理其實我還沒搞懂,讓我再琢磨琢磨兩者的區別,然後我在另寫一篇筆記來說這件事。
“ var data = {} ”本質是創建了一個空對象,“ var data = new Array() ”的本質則是創建了一個空的數組。像 "parameter['索引']" 這樣以字元串作為索引來獲取數組中的 value 是不行的,數組只能接受自然數整型變數的索引如:0,1,2,....。所以, “data['password'] = '123456789';” 其實並不是數組的獲值,而是對象的獲值方式(就是取得對象內屬性的值)。在數組初始化後,以 “data['password'] = '123456789'; data['account'] = 'wdnmdJS';”來賦值的話是無效的賦值方式,這兩個字元串是不會被加進數組裡的,所以得出來的值為空值。詳情可以查看煙花項目筆記查看第四點類與對象的關係和面向對象編程筆記。
外部文章鏈接:
(1)php接受post傳值的方法 - 知乎 (zhihu.com)
(2)淺談PHP接收POST數據方式-php教程-PHP中文網
(3)javascript怎麼將數組轉為json格式-js教程-PHP中文網
(4) 關於js解析JSON數組時的解析