Добавить несколько значений в Json String - PullRequest
0 голосов
/ 14 октября 2019

У меня есть цикл For, который извлекает объекты из вашего запроса к базе данных. Теперь я ищу способ добавить эти объекты в существующую строку JSON.

Мой список выглядит так:

i = [(2, 23322323, 'object1name', 'example1'),(3, 2323232, 'object2name', 'example2'),(4, 12312312, 'object3name','example3')]

Мой цикл For выглядит следующим образом:

count = 1
for item in i:
    object = item[2], item[3]
    print("Object",count, item[2], item[3])
    count = count + 1

Моя строка JSON выглядит следующим образом:

payload = json.dumps({'intent': 'test', 'message': message, 'url':imageURL})

Я хотел бы получить следующий вывод JSON:

payload = json.dumps({'intent': 'test', 'message': message, 'url':imageURL, 'objetc1':object1, 'object2': object2})

Я пытался добавить объекты с помощью:

payload['object'] = item[2], item[3]

Но, к сожалению, я не знаю, как добавить все объекты, а также возрастающую нумерацию, так что Object1, Object2 и т. Д.

Спасибо за вашу помощь.

Ответы [ 4 ]

2 голосов
/ 14 октября 2019

Прежде всего, вам не нужно отслеживать количество. Это потому, что в python есть полезная функция enumerate, которая возвращает как элемент в списке, так и его позицию. Таким образом, вместо этого вы можете сделать что-то вроде этого:

fruits=['Apple', 'Banana', 'Mango']
for i, fruit in enumerate(fruits):
    print(i, fruit)

Это даст следующий результат:

0 Apple
1 Banana
2 Mango

Так что теперь, когда у вас есть счет, вы можете использовать счет, чтобы сохранитьотслеживать количество объектов в вашем ключе json.

fruits=['Apple', 'Banana', 'Mango']
d={}
for i, fruit in enumerate(fruits):
    d['fruit'+str(i)]=fruit
d

Это даст следующий результат:

{'fruit0': 'Apple', 'fruit1': 'Banana', 'fruit2': 'Mango'}

Просто замените фрукты на элементы в вашей базе данных, и вы в порядке. идти!

1 голос
/ 14 октября 2019

Поскольку json выгружает значение в полезную нагрузку, обратите внимание полезная нагрузка имеет тип string . Необходимо преобразовать полезную нагрузку в тип словарь , чтобы добавить элементы.

# Loads payload back to dictionary
p = json.loads(payload)

# Add objects accordingly as per below
for index, item in enumerate(i):
    p['object' + str(index)] = item[2], item[3]
0 голосов
/ 14 октября 2019

Попробуйте это:

for index, item in enumerate(i):
    payload['object' + str(index)] = item
0 голосов
/ 14 октября 2019

Я не знаю, какова ваша структура объекта, но я думаю, что это поможет вам.

a={'intent': 'test', 'message': 'message', 'url':'imageURL'}
i=["ssdds","rajkot","baroda"]
count = 1
for item in range(len(i)):
  a["object"+str(item+1)]=i[item]
print(a)
...