- Регистрация
- 16.03.2016
- Сообщения
- 1 631
- Благодарностей
- 1 226
- Баллы
- 113
Всем привет. Решили тут потестить работу с OZON, выгружаю оттуда данные по заказам, чтобы не сидеть в постоянно лагающем ЛК.
Допустим, получаю массив данных в JSON такого вида:
Данных, понятно, больше, просто сократил до нужных.
Парсится JSON без проблем, но на выходе мне потом надо иметь всего две вещи: общее количество заказов нужных мне статусов (всего статусов 8, по факту мне надо "брать" только заказы с 3-4, остальные игнорируются), и общую сумму этих заказов. Стоимость всего заказа, к сожалению, получается только суммированием всех товаров из массива (причем, еще и умножением на количество этого товара).
Понятно, что можно нагородить несколько циклов, обрабатывая каждый заказ, откладывая его в определенную таблицу, потом дальше работать с уже "чистой" таблицей. Но что-то мне подсказывает, что есть вариант сделать это намного быстрее.
Если поэтапно:
1. Берем заказ, проверяем статус. Если не подходит, берем следующий. Если подходит, обрабатываем.
2. Считаем общую стоимость заказа (через массив всех товаров в заказе, суммируем и умножаем)
3. Кладем в переменные общее количество подходящих по статусам заказов и общую сумму товаров, входящих в эти заказы.
Возможно, второй этап и не нужен, т.е., всего два этапа: отбрасываем все ненужные по статусу заказы и после этого считаем количество и общую сумму оставшихся.
PS. Да, в коде несилен, до этого решал без проблем кубиками, но здесь, думается, можно намного проще.
Допустим, получаю массив данных в JSON такого вида:
C#:
{"result":[
{
"order_id":111111,
"status":"cancelled",
"products":[
{
"sku":345345345,
"quantity":1,
"price":"300.0000",
},
{
"sku":12312313,
"quantity":2,
"price":"300.0000",
}
],
},
{
"order_id":222222,
"status":"delivering",
"products":[
{
"sku":768678678,
"quantity":1,
"price":"1300.0000",
},
{
"sku":456456456,
"quantity":1,
"price":"3200.0000",
}
],
}
]
}
Парсится JSON без проблем, но на выходе мне потом надо иметь всего две вещи: общее количество заказов нужных мне статусов (всего статусов 8, по факту мне надо "брать" только заказы с 3-4, остальные игнорируются), и общую сумму этих заказов. Стоимость всего заказа, к сожалению, получается только суммированием всех товаров из массива (причем, еще и умножением на количество этого товара).
Понятно, что можно нагородить несколько циклов, обрабатывая каждый заказ, откладывая его в определенную таблицу, потом дальше работать с уже "чистой" таблицей. Но что-то мне подсказывает, что есть вариант сделать это намного быстрее.
Если поэтапно:
1. Берем заказ, проверяем статус. Если не подходит, берем следующий. Если подходит, обрабатываем.
2. Считаем общую стоимость заказа (через массив всех товаров в заказе, суммируем и умножаем)
3. Кладем в переменные общее количество подходящих по статусам заказов и общую сумму товаров, входящих в эти заказы.
Возможно, второй этап и не нужен, т.е., всего два этапа: отбрасываем все ненужные по статусу заказы и после этого считаем количество и общую сумму оставшихся.
PS. Да, в коде несилен, до этого решал без проблем кубиками, но здесь, думается, можно намного проще.