Javascript 使用关键字搜索JSON结果集并仅返回匹配项
我试图搜索下面的Yodlee JSON数据源,例如,如果关键字是“furniture”,那么只显示“plainTextDescription”,它等于“furniture transactions” 不太确定如何使用JQuery通过嵌套的JSON结果集进行grep ///原始YODLEE JSON结果集Javascript 使用关键字搜索JSON结果集并仅返回匹配项,javascript,jquery,json,search,yodlee,Javascript,Jquery,Json,Search,Yodlee,我试图搜索下面的Yodlee JSON数据源,例如,如果关键字是“furniture”,那么只显示“plainTextDescription”,它等于“furniture transactions” 不太确定如何使用JQuery通过嵌套的JSON结果集进行grep ///原始YODLEE JSON结果集 提前谢谢 通过JQuery可以很容易地完成这一点 在已被接受的答案中,已经编写了一个简单的方法来为您执行此操作。它对JSON对象进行深度搜索,然后将所有匹配的对象输出到一个数组中。获取此数组的
提前谢谢 通过JQuery可以很容易地完成这一点 在已被接受的答案中,已经编写了一个简单的方法来为您执行此操作。它对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;
这是我的建议
简短版本如下:
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>');
}
})();
var data=JSON.stringify({“Body”:[{……我那讨厌的长JSON}]});
var parsedData=JSON.parse(数据);
var交易=[];
//处理帐户对象
函数processAccount(account){
if(账户卡交易){
对于(变量i=0;i');
}
})();
为了便于阅读,我将这些位分解为多个函数,但可以将其重新分解为不太详细的部分。为什么不将其转换为Javascript对象,并使用.indexOf()?@m.casey搜索它?您能提供一个简单的代码示例吗?我在下面添加了一个答案。