удаляя только родительский узел, а не дочерний узел в объекте json - PullRequest
0 голосов
/ 17 марта 2011
{"0":
     {"id":"1",
      "Name":"A1",
      "parent_id":"0"},
 "1":
    {"id":"2",
     "Name":"A2",
     "parent_id":"0",
     "0":
         {"id":"3",
          "Name":"A3",
          "parent_id":"2",
          "0": 
              {"id":"4",
               "Name":"A4",
               "parent_id":"3"}}}}

Заполняется из таблицы базы данных.Я хочу удалить только идентификатор узла 2 (A2).Идентификатор родителя идентификатора 3 должен автоматически стать идентификатором 1. То есть непосредственный потомок А2 становится потомком своего родителя вместе со своими потомками.Я не могу использовать сплайс или удалить, поскольку я использую JS с QML.Какие-либо предложения?В настоящее время я могу удалить весь узел вместе с его дочерними элементами (a2, a3, a4), найдя узел, который должен быть удален, и присвоив ему значение null. У меня возникают трудности при удалении только выбранного узла, а не его дочерних элементов.

Ответы [ 3 ]

2 голосов
/ 17 марта 2011

jsonObject['1'] = jsonObject['1']['0'];

Это должно уменьшить счетчик ссылок для A2 и уничтожить его, но увеличить счетчик ссылок для A3, сохранив A3 и его потомков.

1 голос
/ 17 марта 2011

Вы не можете просто удалить. Вам необходимо скопировать содержимое, которое вы хотите сохранить перед удалением.

Может быть, ваша настоящая проблема в структуре самих данных. Скорее всего, вы хотите, чтобы структура json была плоской, а затем используйте функцию для воссоздания дерева по мере необходимости.

0 голосов
/ 17 марта 2011

Мне пришлось сделать что-то похожее на это, и, к сожалению, я нашел единственный способ сделать это - перестроить структуру JSON вручную.:(

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