搜索和编辑嵌套的JSON元素

时间:2012-03-12 17:23:05

标签: javascript json search

基本上我希望能够在Javascript(可选JQuery)中搜索具有特定元素的嵌套元素的JSON并进行编辑。

实施例。搜索ID为110的“组件”,并将名称更改为“视频卡”。

请注意,以下JSON只是一个示例。我想知道是否存在javascript库或好的技巧来做这样的事情,我不认为遍历整个json或编写我自己的方法是最好的解决方案。

{
   "computers": [
   {
     "id": 10,
     "components": [
         {
           "id": 56,
           "name": "processor"
         },
         {
           "id": 24,
           "name": "ram"
        }
      ]
    },
    {
      "id": 11,
      "components": [
        {
          "id": 110,
          "name": "graphic card"
        },
        {
          "id": 322,
          "name": "motherboard"
        }
      ]
    }
  ]
}

2 个答案:

答案 0 :(得分:2)

您可以尝试linq.js

答案 1 :(得分:1)

您可以使用此javascript lib,DefiantJS(http://defiantjs.com),您可以使用它在JSON结构上使用XPath过滤匹配。把它放在JS代码中:

var data = {
       "computers": [
          {
             "id": 10,
             "components": [
                { "id": 56, "name": "processor" },
                { "id": 24, "name": "ram" }
             ]
          },
          {
             "id": 11,
             "components": [
                { "id": 110, "name": "graphic card" },
                { "id": 322, "name": "motherboard" }
             ]
          }
       ]
    },
    res = JSON.search( data, '//components[id=110]' );

res[0].name = 'video card';

这是一个工作小提琴;
http://jsfiddle.net/g8fZw/

DefiantJS使用方法“search”扩展全局对象JSON,并返回一个匹配的数组(如果没有找到匹配项,则返回空数组)。您可以在此处使用XPath Evaluator尝试lib和XPath查询:

http://www.defiantjs.com/#xpath_evaluator