Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавление данных в JSON (https://javascript.ru/forum/misc/63133-dobavlenie-dannykh-v-json.html)

dmi 19.05.2016 20:50

Добавление данных в JSON
 
Добрый день.
Перерыл весь интернет и посмотрел несколько уроков для ликбеза по json
но не нашел ответа на свой вопрос

есть json код который я получаю через ajax
к примеру такой
[
{"Itemid":35,
  "name":"test",
  "hide":0
},
{"Itemid":36,
  "name":"test22",
  "hide":0
},
{"Itemid":37,
  "name":"test33",
  "hide":0
},
{"Itemid":38,
  "name":"test32",
  "hide":0
}
]

Мне надо вставить в строку с Itemid 37 вставить такое
[{"Itemid":39,
  "name":"test44",
  "hide":0
},
{"Itemid":40,
  "name":"test55",
  "hide":0
}]


чтоб получилось так
[
{"Itemid":35,
  "name":"test",
  "hide":0
},
{"Itemid":36,
  "name":"test22",
  "hide":0
},
{"Itemid":37,
  "name":"test33",
  "hide":0,
  "parent": [{"Itemid":39,
                 "name":"test44",
                  "hide":0
                  },
                 {"Itemid":40,
                   "name":"test55",
                   "hide":0
                 }]
},
{"Itemid":38,
  "name":"test32",
  "hide":0
}
]


единственное что накопал - через concat - но это совсем не то

Скажите хотя б куда посмотреть пожалуйста
Заранее благодарен.

рони 19.05.2016 21:12

dmi,
а запятые где?

рони 19.05.2016 21:16

dmi,
циклом обнаружить нужный элемент в массиве и по его индексу добавить нужное свойство в элемент.

dmi 19.05.2016 21:22

Цитата:

Сообщение от рони (Сообщение 417039)
dmi,
а запятые где?

:-? извиняйте - уже добавил

Только циклом? громоздкое получится решение.

рони 19.05.2016 21:23

dmi,
<script>
var json =  [
{"Itemid":35,
  "name":"test",
  "hide":0
},
{"Itemid":36,
  "name":"test22",
  "hide":0
},
{"Itemid":37,
  "name":"test33",
  "hide":0
},
{"Itemid":38,
  "name":"test32",
  "hide":0
}
], arr = [{"Itemid":39,
  "name":"test44",
  "hide":0
},
{"Itemid":40,
  "name":"test55",
  "hide":0
}]

json.some(function(a) {
   return a.Itemid == 37 && (a.parent = arr)
})
document.write(JSON.stringify(json))

  </script>

dmi 19.05.2016 21:30

рони,
Благодарю, уже копаю в эту сторону

Rise 19.05.2016 22:13

dmi, что значит "parent" для 37 что 39 и 40 его родители или наоборот дети?

dmi 19.05.2016 22:18

Цитата:

Сообщение от Rise (Сообщение 417046)
dmi, что значит "parent" для 37 что 39 и 40 его родители или наоборот дети?

ошибся - там вместо parent - child
но не суть - попробовал метод Рони и он сработал. Но если я с помощью его функции к примеру хочу добавить еще одну вложенность скажем тоже самое после Итем 39 - то ничего не работает

пример для понимания
[
{"Itemid":35,
  "name":"test",
  "hide":0
},
{"Itemid":36,
  "name":"test22",
  "hide":0
},
{"Itemid":37,
  "name":"test33",
  "hide":0,
  "parent": [{"Itemid":39,
                 "name":"test44",
                  "hide":0
                   "parent": [{"Itemid":41,
                                  "name":"test45",
                                 "hide":0
                                 },
                                 {"Itemid":42,
                                  "name":"test56",
                                 "hide":0
                                }]
                  },
                 {"Itemid":40,
                   "name":"test55",
                   "hide":0
                 }]
},
{"Itemid":38,
  "name":"test32",
  "hide":0
}
]

Rise 19.05.2016 22:25

dmi, тогда так:
[{
	"Itemid":35,
	"name":"test",
	"hide":0
},{
	"Itemid":36,
	"name":"test22",
	"hide":0
},{
	"Itemid":37,
	"name":"test33",
	"hide":0,
	"childId": [39,40]
},{
	"Itemid":38,
	"name":"test32",
	"hide":0
},{
	"Itemid":39,
	"name":"test44",
	"hide":0
},{
	"Itemid":40,
	"name":"test55",
	"hide":0
}]

или так:
[{
	"Itemid":35,
	"name":"test",
	"hide":0
},{
	"Itemid":36,
	"name":"test22",
	"hide":0
},{
	"Itemid":37,
	"name":"test33",
	"hide":0
},{
	"Itemid":38,
	"name":"test32",
	"hide":0
},{
	"Itemid":39,
	"name":"test44",
	"hide":0,
	"parentId":37
},{
	"Itemid":40,
	"name":"test55",
	"hide":0,
	"parentId":37
}]

или всё вместе

рони 19.05.2016 22:27

dmi,
так идите по дереву ищите нужное


Часовой пояс GMT +3, время: 01:20.