2016-08-24 26 views
-3

我有附帶這樣的:我有一個JSON對象,它是在dymanic長度,需要處理它

{ 
    "abc": [{ 
     "statsFetchDate": 1463961600000, 
     "facebookLikes": 0, 
     "facebookComments": 0, 
     "facebookShares": 0, 
     "twitterShares": 0, 
     "linkedInShares": null, 
     "instagramLikes": null, 
     "instagramComments": null, 
     "engagement": null, 
     "velocity": 50710.29999999996 
    }, { 
     "statsFetchDate": 1464048000000, 
     "facebookLikes": 0, 
     "facebookComments": 0, 
     "facebookShares": 0, 
     "twitterShares": 0, 
     "linkedInShares": null, 
     "instagramLikes": null, 
     "instagramComments": null, 
     "engagement": null, 
     "velocity": 473968.7000000002 
    }], 
    "def": [{ 
     "statsFetchDate": 1463961600000, 
     "facebookLikes": 0, 
     "facebookComments": 0, 
     "facebookShares": 0, 
     "twitterShares": 0, 
     "linkedInShares": null, 
     "instagramLikes": null, 
     "instagramComments": null, 
     "engagement": null, 
     "velocity": 50710.29999999996 
    }, { 
     "statsFetchDate": 1464048000000, 
     "facebookLikes": 0, 
     "facebookComments": 0, 
     "facebookShares": 0, 
     "twitterShares": 0, 
     "linkedInShares": null, 
     "instagramLikes": null, 
     "instagramComments": null, 
     "engagement": null, 
     "velocity": 473968.7000000002 
    }] 
} 

我需要繪製圖表爲每個附帶的對象,即,JSON響應abc和def在這種情況下,但json對象本質上是動態的,我可以得到多個對象,我怎麼可以通過它們每一個,並處理它們,例如在這裏我需要訪問abc.stats獲取日期和速度,也def .stats獲取日期和速度,這將是一個多線圖,繪圖不是一種緊張,但我如何解析通過多個JSON對象?

+1

可能性包括,[的for..in]您的繪圖(https://developer.mozilla.org/en/docs/Web/JavaScript/ Reference/Statements/for ... in),[Object.keys](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys)和[for..of] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of)如果你讓對象可迭代。 – Xotic750

回答

0

檢查下面的代碼將在你的嵌套JSON console.log每個statsFetchDate。 檢查Fiddle

var obj = { 
 
    "abc": [{ 
 
    "statsFetchDate": 1463961600000, 
 
    "facebookLikes": 0, 
 
    "facebookComments": 0, 
 
    "facebookShares": 0, 
 
    "twitterShares": 0, 
 
    "linkedInShares": null, 
 
    "instagramLikes": null, 
 
    "instagramComments": null, 
 
    "engagement": null, 
 
    "velocity": 50710.29999999996 
 
    }, { 
 
    "statsFetchDate": 1464048000000, 
 
    "facebookLikes": 0, 
 
    "facebookComments": 0, 
 
    "facebookShares": 0, 
 
    "twitterShares": 0, 
 
    "linkedInShares": null, 
 
    "instagramLikes": null, 
 
    "instagramComments": null, 
 
    "engagement": null, 
 
    "velocity": 473968.7000000002 
 
    }], 
 
    "def": [{ 
 
    "statsFetchDate": 1463961600000, 
 
    "facebookLikes": 0, 
 
    "facebookComments": 0, 
 
    "facebookShares": 0, 
 
    "twitterShares": 0, 
 
    "linkedInShares": null, 
 
    "instagramLikes": null, 
 
    "instagramComments": null, 
 
    "engagement": null, 
 
    "velocity": 50710.29999999996 
 
    }, { 
 
    "statsFetchDate": 1464048000000, 
 
    "facebookLikes": 0, 
 
    "facebookComments": 0, 
 
    "facebookShares": 0, 
 
    "twitterShares": 0, 
 
    "linkedInShares": null, 
 
    "instagramLikes": null, 
 
    "instagramComments": null, 
 
    "engagement": null, 
 
    "velocity": 473968.7000000002 
 
    }] 
 
} 
 
var objKeys = Object.keys(obj) 
 
for (var i = 0, len = objKeys.length; i < len; i++) { 
 
    for (var y = 0, len = obj[objKeys[i]].length; y < len; y++) { 
 
    console.log(obj[objKeys[i]][y].statsFetchDate) 
 
    } 
 
}

+0

謝謝!我現在得到了這個問題..:D –

0

使用鍵循環對象,而不知道有多少個對象。

for(var key in object){ 
    //first key will be "abc", second "def" 
    //object[key] will return the current object content 
} 
0

要處理上述數據結構,你需要做以下步驟。

1.解析JSON串

var oJSON = JSON.parse(jsonResponseString); 

2.遍歷(動態)對象屬性

for (var prop in oJSON) { 
    if (oJSON.hasOwnProperty(prop)) { 
     var aData = oJSON[prop]; // aData will be "abc" for example 
     // do something with the array 
    } 
} 

您需要使用hasOwnProperty檢查屬性以避免訪問繼承屬性如toString()https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwnProperty

3.做數據

// For example 
aData.forEach(function(dataPoint) { 
    // dataPoint is an object 
    plotPoint(dataPoint.statsFetchDate, dataPoint.velocity); 
}); 

// alternative 
for (var i = 0; i < aData.length; i++) { 
    var dataPoint = aData[i]; // This is an object 
    plotPoint(dataPoint.statsFetchDate, dataPoint.velocity); 
} 
相關問題