Задать вопрос

Узнать количество массивов и подмассивов JSON в Python?

Есть массив вида:
[
  {
    "number": "53223",
    "internalNumber": "321091",
    "positions": [
    {
        "id": "1613",
        "statusCode": "62571"
    },
      {
        "id": "1614",
        "statusCode": "62571"
		}
		]
		},
		 {
    "number": "53243182",
    "internalNumber": "321091352",
	"positions": [
	{
        "id": "1644",
        "statusCode": "62571"
		}
		]
		}
	]


Количество массивов и подмассивов неизвестно до запроса к серверу

Из каждого подмассива нужно получить значение "statusCode" и передать параметром к GET запросу
param = data[0]['positions'][0]["statusCode"]
url1 = SetOrderStURL + param

Change = requests.get(url1, verify=False)
Change.encoding = "utf-8"
print(Change)


Как обрабатывать неизвестное количество массивов JSON, получать данные определенного key( "statusCode": "62571") и последовательно по каждому "statusCode" отправлять GET запрос ?
Большое спасибо всем, кто прочел, я совсем не понимаю что делать(
  • Вопрос задан
  • 186 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
NeiroNx
@NeiroNx
Программист
for param in [y["statusCode"] for x in data for y in x["positions"]]:
    Change = requests.get(SetOrderStURL + param, verify=False)
    Change.encoding = "utf-8"
    print(Change)


или
for x in data:
   for y in x["positions"]:
       Change = requests.get(SetOrderStURL + y["statusCode"], verify=False)
       Change.encoding = "utf-8"
       print(Change)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gscraft
@gscraft
Программист, философ
Эм, а почему просто не перебрать в цикле?
# data[0]['positions'][0]["statusCode"]
for item in data:
  positions = data.get('positions')
  if isinstanceof(positions, list): # например, проверьте, если значение может быть пустым
    for position in positions:
      status_code = position.get('statusCode') # стоит всегда называть_переменные_змейкой
      if status_code == 'abc': pass # делайте, что Вам нужно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы