@Bl4ckm45k

Узнать количество массивов и подмассивов 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 запрос ?
Большое спасибо всем, кто прочел, я совсем не понимаю что делать(
  • Вопрос задан
  • 60 просмотров
Решения вопроса 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)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
GennadyS
@GennadyS
Программист, философ
Эм, а почему просто не перебрать в цикле?
# 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 # делайте, что Вам нужно
Ответ написан
pro100chel
@pro100chel
Senior Pomidor Developer | CEO of GOVNOKOD LTD.
import json

data = json.loads('[{"number": "53223","internalNumber": "321091","positions": [{"id": "1613","statusCode": "62571"},{"id": "1614","statusCode": "62571"}]},{"number": "53243182","internalNumber": "321091352","positions": [{"id": "1644","statusCode": "62571"}]}]')

for i in data:
  if 'positions' in i:
    for w in i['positions']:
      id = w['id']
      statusCode = w['statusCode']
      print(f"ID: {id}, STATUS CODE: {statusCode}")
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы