如何在一个JSON文件中查找条目

时间:2010-12-06 08:29:34

标签: javascript jquery json

我有一个JSON文件,如下所示:

{entries:[{title:‘foo’,id:‘01’,created:‘2010-12-06’},{title:‘bar’,id:‘02’,created:‘2010-12-05’}]}

而且我还有一个html文件,它使用jQuery从服务器获取上面的json文件。并显示信息。

<div id='list'>
<li><p id="01">foo</p></li>
<li><p id="02">bar</p></li>
</div>

现在,我想使用jQuery,当我点击一个项目时,例如“foo”,首先从我的JSON文件中找到此条目,然后在JSON数据中进行一些更改。目前我是堆栈的第一件事,当点击该项目,在JSON文件中找到正确的条目,任何人都可以帮忙吗?感谢。

1 个答案:

答案 0 :(得分:1)

假设您已经解析了JSON字符串,您必须遍历数组以获取相应的项目:

$('#id p').click(function() {
    var entries = json.entries;
    var item = null;
    for(var i = entries.length;i--;) {
        if(entries[i].id == this.id) {
            item = entries[i];
            break;
        }
    }

    // so something with item
}); 

但是每次在数组上循环都没有效率。更好的是创建某种哈希表(它只是JavasScript中的一个对象(就像其他一切;)))并且只需查找id。这意味着您必须预处理返回的JSON:

var items = {};
var entries = json.entries;

for(var i = entries.length;i--;) {
    var entry = entries[i];
    items[entry.id] = entry;
}

以后你可以通过以下方式获得相应的项目:

var item = items[this.id];
// item will be undefined if `this.id` is not present in `items`

附注:您的HTML无效,li元素必须以ulol作为父级。