Цикл по массиву JSON к API - PullRequest
       1

Цикл по массиву JSON к API

0 голосов
/ 20 сентября 2019

Я новичок в Python и сталкиваюсь с проблемами с моим кодом.Может ли кто-нибудь, пожалуйста, помогите мне решить эту проблему.

Я извлекаю данные и преобразовываю их в формат JSON и сохраняю в одной переменной.

вывод print (data) равен

['{"lot_no":"4f64-b946-d71fdf14f3ae",,"batch_status":"pending","recipients":[{},{}]}', 
'{"lot_no":"1b5a-c5fc-41ac-b798-b7afd835e8c6",,"lot_status":"pending","recipients":[{"acocunt":"-370816706760555322764049398323519400","snp":"456786545678","tracking_code":"User1","template_id":1,"communication_type":"phone",,"lang":"en",,"template_data":{"price":"12.34","paymentType":"visa"}},{"acocunt":"56785678976576545678","snp":"456786545678","tracking_code":"1256","template_id":1,"communication_type":"phone",,"lang":"en","template_data":{"price":"94.27","paymentType":"cash"}}]}', 
'{"lot_no":"ad96-5a8f-4dad-9fad-ba93f682d8b5",,"lot_status":"pending","recipients":[{"acocunt":"-3708167062764049398323519400","snp":"456786545678","tracking_code":"User1","template_id":1,"communication_type":"phone",,"lang":"en",,"template_data":{"price":"12.34","paymentType":"visa"}},{"acocunt":"56785654567876545678","snp":"456786545678","tracking_code":"2568","template_id":1,"communication_type":"phone",,"lang":"en","template_data":{"price":"94.27","paymentType":"cash"}}]}', 
'{"lot_no":"07f-fdf3-4fdf-9fa7-32b6b92fb477",,"lot_status":"pending","recipients":[{},{}]}', 
'{"lot_no":"1eae1-0644-489c-917c-f7de7751fac9",,"lot_status":"pending","recipients":[{},{}]}', 
'{"lot_no":" -fb29-44d7-a5c8-7ee1a55e8fe3",,"lot_status":"pending","recipients":[{},{}]}'] 

Я хочу удалить [(в начале) и] (в конце)

Я пробовал с newdata = data [1: -1], но он возвращает []

Мне нужно отправить эти лоты в API, я должен сделать это для каждого лота и перебрать все лоты.

Я получаю количество этих лотов (для приведенного выше кода это 6)

Приведенный ниже код работает для одного лота (ad96-5a8f-4dad-9fad-ba93f682d8b5), если я передаю данные запросов на импорт этого лота

Приведенный ниже код работает для одного лота (ad96-5a8f-4dad-9fad-ba93f682d8b5) если я передам данные этого лота

import requests

url = "url/api /notify/lot/ ad96-5a8f-4dad-9fad-ba93f682d8b5"
payload = '{"lot_no":"07f-fdf3-4fdf-9fa7-32b6b92fb477",,"lot_status":"pending","recipients":[{},{}]}', 
headers = {
    'Content-Type': "application/json",
    'Authorization': inputtokenhere,
    'User-Agent': "PostmanRuntime/7.3",
    'Accept': "*/*",
    'Cache-Control': "no-cache",
    'Host': "ext-api-support-int.godrej.com",
    'Accept-Encoding': "gzip, deflate",
    'Content-Length': "697",
    'Connection': "keep-alive",
    'cache-control': "no-cache"
    }
response = requests.request("PUT", url, data=payload, headers=headers)
print(response.text)

Я хочу зациклить детали каждого лота в коде API, может ли кто-нибудь помочь с этим, как это сделать?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

если у вас есть список с большим количеством элементов, используйте for -loop, чтобы получить каждый элемент отдельно и отправить его

РЕДАКТИРОВАТЬ: Я добавил код, который получает lot_no из строки ииспользовать с url.Для создания правильных данных JSON необходимо заменить double ',,' на , в item.

data = ['{"lot_no":"4f64-b946-d71fdf14f3ae",,"batch_status":"pending","recipients":[{},{}]}', 
'{"lot_no":"1b5a-c5fc-41ac-b798-b7afd835e8c6",,"lot_status":"pending","recipients":[{"acocunt":"-370816706760555322764049398323519400","snp":"456786545678","tracking_code":"User1","template_id":1,"communication_type":"phone",,"lang":"en",,"template_data":{"price":"12.34","paymentType":"visa"}},{"acocunt":"56785678976576545678","snp":"456786545678","tracking_code":"1256","template_id":1,"communication_type":"phone",,"lang":"en","template_data":{"price":"94.27","paymentType":"cash"}}]}', 
'{"lot_no":"ad96-5a8f-4dad-9fad-ba93f682d8b5",,"lot_status":"pending","recipients":[{"acocunt":"-3708167062764049398323519400","snp":"456786545678","tracking_code":"User1","template_id":1,"communication_type":"phone",,"lang":"en",,"template_data":{"price":"12.34","paymentType":"visa"}},{"acocunt":"56785654567876545678","snp":"456786545678","tracking_code":"2568","template_id":1,"communication_type":"phone",,"lang":"en","template_data":{"price":"94.27","paymentType":"cash"}}]}', 
'{"lot_no":"07f-fdf3-4fdf-9fa7-32b6b92fb477",,"lot_status":"pending","recipients":[{},{}]}', 
'{"lot_no":"1eae1-0644-489c-917c-f7de7751fac9",,"lot_status":"pending","recipients":[{},{}]}', 
'{"lot_no":" -fb29-44d7-a5c8-7ee1a55e8fe3",,"lot_status":"pending","recipients":[{},{}]}'] 

import json

for item in data:

    d = json.loads(item.replace(',,', ','))
    lot = d['lot_no']
    print(lot)

    #lot = item.split(':')[1].split(',')[0].strip('"')
    #print(lot)

    url = "url/api/notify/lot/" + lot

    response = requests.put(url, data=item, headers=headers)
    print(response.text)
0 голосов
/ 20 сентября 2019

Вы можете создать массив из строки JSON, однако в указанном формате он указан не в правильном формате JSON.

Преобразование строки JSON в массив:

import json json_string = '[{}]' data = json.loads(x) print (data)

После этого вы можете перебирать элементы массива и выполнять необходимые операции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...