我正在尝试搜索下面的Yodlee JSON数据源,例如,如果关键字是"家具"然后只显示" plainTextDescription"这相当于"家具交易"
不太确定如何使用JQuery来嵌套JSON结果集...
/// RAW YODLEE JSON RESULTSET
提前致谢!
答案 0 :(得分:1)
这里是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>');
}
})();
我将这些位分解为多个函数以便于阅读,但可以将其重新分解为更简洁。
答案 1 :(得分:0)
您可以通过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;