我需要知道是否有任何JSON實現可以處理稀疏數組,以使我滿意。我看過這個問題:How to represent a sparse array in JSON?但是使用一個對象而不是一個數組不是我的選擇;我需要一個數組。處理稀疏數組的JSON實現
我的最低要求是實施填寫任何與「未定義」的差距。否則,我正在編寫防禦性代碼,在JSON編碼之前自己填補空白。
我需要知道是否有任何JSON實現可以處理稀疏數組,以使我滿意。我看過這個問題:How to represent a sparse array in JSON?但是使用一個對象而不是一個數組不是我的選擇;我需要一個數組。處理稀疏數組的JSON實現
我的最低要求是實施填寫任何與「未定義」的差距。否則,我正在編寫防禦性代碼,在JSON編碼之前自己填補空白。
您可以使用屬性名稱是索引並且屬性值是值的對象,然後通過中介函數運行它以創建稀疏數組?
function getSparseArray(obj) {
var ary = [];
for (prop in obj) {
var i = parseInt(prop,10);
if (!isNaN(i)) {
ary[i] = obj[prop];
}
}
return ary;
}
你會送它像
{ "5":"Five", "11":"Eleven", "99":"Ninety-Nine"}
,並取回這是人口只有三個值的數組:
ary[5] = "Five"
ary[11] = "Eleven"
ary[99] = "Ninety-Nine"
ary[0] = 'undefined'
ary[98] = 'undefined'
etc.
ary
這裏將有100的長度,但在你的意義上它將是一個「稀疏」數組。
...和「未定義」不是JSON值 – Pointy 2010-04-16 19:22:35
採取的點;因此會用null填充空缺 – 2010-04-16 20:03:28
問題是,JSON是JSON,並且沒有辦法直接表示「稀疏數組」,因此任何JSON解析器都能理解它。但是,如果您對在JSON的「入」和「出」方式中轉換數組感到滿意,那麼@ Robusto的答案就是您想要查看的內容。 – Pointy 2010-04-16 20:08:11