Как сериализовать массив в объект json?

#python #arrays #json #serialization

#python #массивы #json #сериализация

Вопрос:

Я пишу веб-скребок, который получает a car_id и все его изображения:

 car_id = 12345
images = []
image_list = self.driver.find_elements_by_css_selector('.carousel-inner a img')
for img in image_list:
    img_url = img.get_attribute('src')
    if img_url:
        images.append(img_url)

 

Результатом программы является объект json, содержащий car_id и список его изображений… но как мне сериализовать массив python в следующий объект json?

 item = {
    'car_id': car_id,
    'images': ["img1", "img2", ...] # serialize images array 
}
 

Ответ №1:

 car_id = 12345
images = ['url1', 'url2', 'url3'] #list of image urls

item = {
    'car_id' : car_id,
    'images' : images
}
 

item Dict можно редактировать с помощью

 item['images'].append('url4')
 

Если вместо этого список изображений содержит фактические объекты изображения (сериализованные в байты или какой-либо другой формат), то images список может содержать эти объекты.

Переменная item будет иметь тип dict в python. Этого может быть достаточно для вашего варианта использования. Если нет, то вы можете преобразовать его в строку json.

 import json
result = json.dumps(item)
 

result будет иметь требуемую строку json.

Ответ №2:

инициализируйте элемент, затем используйте item['images'].append(img_url)

 items = []

for id in listID:
    item = {
      "car_id": id, # 12345
      "images" = []
    }
    
    image_list = self.driver.find_elements_by_css_selector('.carousel-inner a img')
    for img in image_list:
        img_url = img.get_attribute('src')
        if img_url:
            item['images'].append(img_url)
            
    items.append(item)
    
print(items)

'''
[{
    'car_id': 12,
    'images': ["img1", "img2", ...] 
},
{
    'car_id': 23,
    'images': ["img1", "img2", ...]
}]
'''