使用JQuery来操作JSON对象

时间:2011-04-08 04:41:02

标签: jquery json

我们可以使用JQuery函数来操作和搜索JSON对象吗? 就像我有一个这个对象的数组类型的大对象:

Node 
{
    Name,
    Property1,
    Property2
}

我可以使用jquery函数find来查找属性名为John的节点吗? 并同样修改内容??

编辑:是的,我其实是在寻找像JLinq这样的东西, 谢谢

3 个答案:

答案 0 :(得分:3)

要找到那个节点,你会像这样循环...

$.each(yourJson, function(i, node) {

    if (node.Name == 'John') {
        // Found it
        return false;
    }

});

这是O(n)。

答案 1 :(得分:3)

我认为你在这里寻找的是jLinq。它像linq,但它是一个jquery插件。做你想问的事情真的很容易。它会是这样的:

var matchingNodes = jlinq.from(data.Nodes).equals("Name", "John").select();

如果您只想要第一场比赛,请尝试:

var firstMatch = jlinq.from(data.Nodes).equals("Name", "John").first();

这就是它的全部内容。非常快速有效,而且非常语义化,因此很容易保持理解意图。

答案 2 :(得分:2)

不,抱歉。 jQuery用于处理DOM节点或XML结构。如果要搜索对象哈希,则需要手动执行。即使jQuery有方法可以做到这一点,但它没有任何“神奇”可以让事情变得更快,就像使用DOM搜索一样 - 没有更快的方法来搜索哈希而不是递归(除非你已预先解析了它)

OMFG PEOPLE !!

看,jQuery不是所有JavaScript的全部救星。直接JS中有些东西更好!真是太可怕了:

for(var i=0, l=ary.length; i<l; i++){
   if(ary[i].Name=='John'){
      // do something
      break;
   }
}

你正在“寻找”的答案很简单:

$(ary).filter(function(){ return this.Name=='John'; });

快乐?它会变慢,因为你有嵌套的函数调用,它会变慢,因为它将迭代每个元素而不是停止。

但它使用jQuery。