#python #json #python-3.x #dictionary #if-statement
Вопрос:
Цель состоит в том, чтобы обновить объект json, содержащий определенный ключ
Файл json выглядит следующим образом:
{
"collection": [
{"name": "name1", "phone": "10203040"},
{"name": "name2", "phone": "20304050", "corporateIdentificationNumber": "1234"},
{"name": "name3", "phone": "30405060", "corporateIdentificationNumber": "5678"}
]}
если объект json содержит ключ «Корпоративный идентификационный номер», затем выполните итерацию через диктант и обновите » имя » и «Корпоративный идентификационный номер» из словаря. Словарь выглядит так:
dict = {"westbuilt": "4232", "Northbound": "5556"}
Другими словами, это означает, что мне нужно обновить объект json с помощью словаря, и всякий раз, когда я обновляю объект json, он должен выбрать пару ключ/значение из словаря, а затем перейти к следующему ключу/значению для следующего объекта json, содержащего ‘corporateIdentificationNumber’
Код:
r = requests.get(url="*URL*")
file = r.json()
for i in file['collection']:
if 'corporateIdentificationNumber' in i:
--- select next iterated key/value from dict---
--- update json object ---
результат должен выглядеть так:
{
"collection": [
{"name": "name1", "phone": "10203040"},
{"name": "westbuilt", "phone": "20304050", "corporateIdentificationNumber": "4232"},
{"name": "Northbound", "phone": "30405060", "corporateIdentificationNumber": "5556"}
]}
Комментарии:
1. Как должен выглядеть результирующий файл json?
2. @quamrana ПРИВЕТ, спасибо, что уделили мне время. Я только что обновил свой вопрос, указав, как я ожидаю, что результат будет выглядеть
3. Итак, вы полагаетесь на порядок элементов в
dict
(кстати, с плохим именем), чтобы перезаписать значения вcollection
списке?4. Да, именно так! Не уверен, что это правильный способ сделать это. я сейчас нахожусь на большой глубине
5. Объект JSON-это диктант.
Ответ №1:
Я думаю, вам нужно использовать итератор для элементов:
updates = {"westbuilt": "4232", "Northbound": "5556"}
r = requests.get(url="*URL*")
file = r.json()
items = iter(updates.items())
try:
for i in file['collection']:
if 'corporateIdentificationNumber' in i:
d = next(items)
i['name'] = d[0]
i["corporateIdentificationNumber"] = d[1]
except StopIteration:
pass
print(file)
Комментарии:
1. Ты спасаешь мне жизнь. Это работает, и это именно то, что мне было нужно. Большое спасибо!
Ответ №2:
json_object["corporateIdentificationNumber"] = "updated value"
file = open("your_json_file.json", "w")
json.dump(json_object, file)
file.close()
Комментарии:
1. Ответы только на код, как правило, не приносят пользы.
2. Необходимые части информации интегрированы в код. «обновленное значение» и «your_json_file».