我試圖尋找以下Yodlee公司JSON數據傳送專線例如,如果關鍵詞是「傢俱」,那麼只顯示「plainTextDescription」,這等於「傢俱交易」使用關鍵字,返回只匹配
不太清楚搜索JSON結果集如何通過使用JQuery嵌套的JSON結果集的grep ...
/// RAW Yodlee公司JSON的ResultSet
提前感謝!
我試圖尋找以下Yodlee公司JSON數據傳送專線例如,如果關鍵詞是「傢俱」,那麼只顯示「plainTextDescription」,這等於「傢俱交易」使用關鍵字,返回只匹配
不太清楚搜索JSON結果集如何通過使用JQuery嵌套的JSON結果集的grep ...
/// RAW Yodlee公司JSON的ResultSet
提前感謝!
這是Fiddle。
簡短的版本是這樣的:
var data = JSON.stringify({ "Body": [{...my obscenely long JSON}] });
var parsedData = JSON.parse(data);
var transactions = [];
// processes account objects
function processAccount(account) {
if (account.cardTransactions) {
for (var i = 0; i < account.cardTransactions.length; i++) {
var transaction = account.cardTransactions[i];
if (transaction) {
if (transaction.categorizationKeyword.toLowerCase() === 'shell oil') {
transactions.push(transaction);
}
}
}
}
}
// processes the itemData objects
function processItemData(itemData) {
for (var i = 0; i < itemData.accounts.length; i++) {
processAccount(itemData.accounts[i]);
}
}
(function() {
// iterates through elements in the body
for (var i = 0; i < parsedData.Body.length; i++) {
processItemData(parsedData.Body[i].itemData);
}
for (var j = 0; j < transactions.length; j++) {
$('#container').append('<p>' + transactions[j].plainTextDescription + '</p>');
}
})();
我打破了位成多個功能更容易閱讀,但一個可以重新因素它被更簡潔。
你可以很容易地通過JQuery來完成這個任務。
在this question的已接受答案中,已經編寫了一個簡單的方法來爲您執行此操作。它對JSON對象進行深層搜索,然後將所有匹配的對象輸出到一個數組中。獲得這個數組的長度會給你你喜歡的事件的數量。
function getObjects(obj, key, val) {
var objects = [];
for (var i in obj) {
if (!obj.hasOwnProperty(i)) continue;
if (typeof obj[i] == 'object') {
objects = objects.concat(getObjects(obj[i], key, val));
} else if (i == key && obj[key] == val) {
objects.push(obj);
}
}
return objects;
}
//put in the desired object name for ObjectName
//if the object is a string just use JSON.parse(ObjectName) to convert it to a javascript object
getObjects(ObjectName, "furnitire", "Furniture Transactions").length;
爲什麼不將它轉換爲Javascript對象並使用.indexOf()進行搜索? –
@ m.casey你能提供一個簡單的代碼示例嗎? – Dango
我在下面添加了一個答案。 –