Помогите разобрать JSON
Добрый день. В ответе от сервера имеется вот такой JSON
{ card: 10000013 code: 752 dt: "2017-11-20 18:03:00" id: 903398 notifies: Array(3) 0:{id: 9161, sended_at: "2017-11-14 09:28:46", params: 0} 1:{id: 9162, sended_at: "2017-11-18 18:03:00", params: 0} 2:{id: 9163, sended_at: "2017-11-20 16:03:00", params: 0} notify: {id: 10, code: 752, caption: "Брюшная полость", info: "Вы записаны на Брюшная полость. За 6 часов до этог…ния нельзя принимать пищу, за 4 часа нельзя пить."} price: {id: 101850, code: 752, name: "Черевна порожнина", nameRu: "УЗИ брюшной полости (дети)", text: "", …} sended_at:null } Это уведомление о записи на прием. Из этого всего мне нужны значения которые находятся внутри массива notifies. Сложность в том что таких уведомлений может быть с десяток за раз. Самый простой способ прогнать ответ от сервера через несколько циклов for и таким образом достучатся до значений в notifies, но при условии что таких уведомлений может быть больше 10 такой цикл станет настоящим адом для устройства клиента. Подскажите пожалуйста как сделать это более лаконично? Быть может есть способ вырезать из всего ответа параметры которые находятся в notifies и запихнуть в отдельный массив, то есть что бы получилось вот так: { {id: 9161, sended_at: "2017-11-14 09:28:46", params: 0} {id: 9162, sended_at: "2017-11-18 18:03:00", params: 0} {id: 9163, sended_at: "2017-11-20 16:03:00", params: 0} //.... и т.д. } |
Цитата:
json + php print_r? |
Nexus, это из консоли вывод. То есть json + console.log()
|
|
smart-create, получить массив массивов "notifies" можно так:
json=json.map(function(item){return item.notifies;}); console.log(json); //Далее объединяю массивы "notifies" json=[].concat.apply([],json); console.log(json); |
Nexus, Большое спасибо. Но это пока всех проблем не решает, у меня выходит вот такая структура
результат Но мне по сути не нужны все эти массивы в которых еще по n массивов. Существует ли способ свести это все до одного единственного массива в котором будет просто список json объектов? То есть в моем случае, вот так: { {id: 9161, sended_at: "2017-11-14 09:28:46", params: 0} {id: 9162, sended_at: "2017-11-18 18:03:00", params: 0} {id: 9163, sended_at: "2017-11-20 16:03:00", params: 0} //.... и т.д. } |
smart-create, смотрите пост №5
|
Nexus, большое спасибо, много нового для меня открыли.
Хочу попросить еще с одним, последним вопросом, помочь. Мне нужно из исходного массива, вытащить объект notify и его значение info, вот оно и запихнуть его в то что получается после всех манипуляций. То есть вот так |
У меня есть идея как это сделать с помощью костылей и циклов, но похоже для этого есть куча методов о которых я ранее не знал(
|
smart-create, попробуйте так:
json=[].concat.apply([],json.map(function(item){ return item.notifies.map(function(obj){ obj.info=item.notify.info; return obj; }); })); console.log(json); |
Часовой пояс GMT +3, время: 22:31. |