Поиск и редактирование вложенных элементов JSON - PullRequest
5 голосов
/ 12 марта 2012

По сути, я хочу иметь возможность в Javascript (необязательно JQuery) искать в JSON с вложенными элементами определенный элемент и редактировать его.

Ex. найдите «компоненты» с идентификатором 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 ]

2 голосов
/ 12 марта 2012

Вы можете попробовать linq.js .

1 голос
/ 05 января 2014

Вы можете использовать этот javascript lib DefiantJS (http://defiantjs.com),, с помощью которого вы можете фильтровать совпадения, используя XPath на структурах JSON. Чтобы поместить его в код 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 расширяет глобальный объект JSON методом «поиск» и возвращает массив совпадений (пустой массив, если совпадений не найдено).Вы можете попробовать запросы lib и XPath с помощью XPath Evaluator здесь:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...