Хобрук: Ваш путь к мастерству в программировании

Как добавить ключ-значение к данным JSON, полученным из файла?

Я новичок в Python, и я играю с данными JSON. Я хотел бы получить данные JSON из файла и добавить к этим данным ключ-значение JSON «на лету».

То есть мой json_file содержит данные JSON, как показано ниже:

{"key1": {"key1A": ["value1", "value2"], "key1B": {"key1B1": "value3"}}}

Я хотел бы добавить часть ключ-значение "ADDED_KEY": "ADDED_VALUE" к приведенным выше данным, чтобы использовать следующий JSON в моем сценарии:

{"ADDED_KEY": "ADDED_VALUE", "key1": {"key1A": ["value1", "value2"], "key1B": {"key1B1": "value3"}}}

Я пытаюсь написать что-то вроде следующего, чтобы выполнить вышеизложенное:

import json

json_data = open(json_file)
json_decoded = json.load(json_data)

# What I have to make here?!

json_data.close()
16.04.2014

Ответы:


1

Ваш объект json_decoded — это словарь Python; вы можете просто добавить к этому свой ключ, а затем перекодировать и переписать файл:

import json

with open(json_file) as json_file:
    json_decoded = json.load(json_file)

json_decoded['ADDED_KEY'] = 'ADDED_VALUE'

with open(json_file, 'w') as json_file:
    json.dump(json_decoded, json_file)

Здесь я использовал открытые файловые объекты в качестве менеджеров контекста (с оператором with), поэтому Python автоматически закрывает файл по завершении.

16.04.2014
  • Используя этот код, у меня возникла проблема с добавлением нового ключа-значения. Мой файл перезаписывается новой парой ключ-значение. 19.09.2020
  • @MrKarma4u: весь файл перезаписан, да. Однако файл перезаписывается с использованием полного словаря, поэтому, если вам не хватает данных, они не были частью того, что было прочитано из файла перед добавлением нового ключа. 19.09.2020

  • 2

    Json, возвращенный из json.loads(), ведет себя так же, как собственные списки/словари Python:

    import json
    
    with open("your_json_file.txt", 'r') as f:
        data = json.loads(f.read()) #data becomes a dictionary
    
    #do things with data here
    data['ADDED_KEY'] = 'ADDED_VALUE'
    
    #and then just write the data back on the file
    with open("your_json_file.txt", 'w') as f:
        f.write(json.dumps(data, sort_keys=True, indent=4, separators=(',', ': ')))
    #I added some options for pretty printing, play around with them!
    

    Для получения дополнительной информации ознакомьтесь с официальным документом.

    16.04.2014

    3

    Ты можешь сделать

    json_decoded['ADDED_KEY'] = 'ADDED_VALUE'
    

    OR

    json_decoded.update({"ADDED_KEY":"ADDED_VALUE"})
    

    который хорошо работает, если вы хотите добавить более одной пары ключ/значение.

    Конечно, вы можете сначала проверить наличие ADDED_KEY — зависит от ваших потребностей.

    И я предполагаю, что вы захотите сохранить эти данные обратно в файл

    json.dump(json_decoded, open(json_file,'w'))
    
    16.04.2014
  • Как проверить наличие ADDED_KEY? 16.04.2014
  • Мой подход зависел бы от того, что я хотел сделать, если бы это существовало. Как бы вы хотели справиться с этим, если бы ключ уже существовал? 16.04.2014
  • Я хотел бы перезаписать существующее значение JSON. Однако для моего любопытства мне интересно даже вызвать ошибку, если ключ JSON существует, и обработать случай вложенности. 16.04.2014
  • Новые материалы

    Библиотеки PyTorch и Python для машинного обучения: приложения в здравоохранении с обнимающим лицом…
    В сфере машинного обучения Python выделяется благодаря своей универсальности и набору предлагаемых библиотек. Развитие машинного обучения в здравоохранении можно частично объяснить простотой и..

    «Что за…» очень хорошо представляет мое выражение лица после того, как я увидел это!
    «Что за…» очень хорошо представляет мое выражение лица после того, как я увидел это!

    5 вещей, которые я сделал, чтобы стать профессиональным разработчиком JavaScript
    Чтобы стать профессиональным JS-разработчиком: 1. Практикуйтесь в рутине, 2. Работайте над проектами, 3. Придерживайтесь одного языка, 4. Наблюдайте за чужим кодом, 5. Будьте последовательны..

    От теории к практике: пошаговое руководство по реализации наивного Байеса
    Вы когда-нибудь застревали в проекте классификации, не зная, как точно предсказать результаты для ваших данных? Вы искали более простой и интуитивно понятный алгоритм, который поможет вам достичь..

    #093 | Моделирование вспышки эпидемии с помощью JavaScript — Часть 3
    TLDR: Я сделал симуляцию вспышки эпидемии, в которую можно поиграть здесь . Мой холст, моя сцена Мой HTML — это всего лишь один div с классом stage, и вот как я настроил на нем свой объект..

    numberToString.js (8kyu 16)
    Алгоритм кодовых войн Проблема Нам нужна функция, которая может преобразовать число в строку. 숫자를 문자열로 변환하는 함수를 작성해라. Решение 01 function numberToString(n) { return n.toString(); }..

    Лучшие практики для быстрого изучения языка программирования
    Изучение языка программирования может быть сложной задачей, но при правильном подходе определенно возможно быстро выучить язык программирования. Хорошее понимание языка программирования может..