Как обновить объект json с помощью словаря в python

#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».