Ошибка типа: объект 'str' не поддерживает назначение элементов, python с json файлами - PullRequest
2 голосов
/ 30 апреля 2020

Вот мой код

import json
with open('johns.json', 'r') as q:
    l = q.read()
    data = json.loads(l)
    data['john'] = '{}'
    data['john']['user'] = 'hey'

Ниже приведен файл json

{}

Каждый раз, когда я запускаю свой код, я получаю сообщение об ошибке

    data['john']['user'] = 'hey'
TypeError: 'str' object does not support item assignment

Есть ли способ исправить это и сделать данные ['john'] ['user'] равными эй?

Ответы [ 3 ]

3 голосов
/ 30 апреля 2020

В вашем коде есть некоторые ошибки. Прежде всего, вы можете использовать json.load вместо json.loads. Первый используется для непосредственного получения данных из файла json.

Затем вы присваиваете data['john'] строку вместо фактического словаря.

import json
with open('johns.json', 'r') as q:
    data = json.load(q)
    data['john'] = {}
    data['john']['user'] = 'hey'
3 голосов
/ 30 апреля 2020

Вы не должны помещать кавычки вокруг {}, который создает строку вместо словаря.

Вы также можете заполнить содержимое в том же назначении:

data['john'] = {"user": "hey"}
2 голосов
/ 30 апреля 2020

Должно читаться

data['john'] = dict()
# or data['john'] = {}

В противном случае data["john"] является строкой, а именно {}.

...