Как динамически построить объект JSON с помощью Python?
Я новичок в Python, и я играю с данными JSON. Я хотел бы динамически построить объект JSON, добавив некоторое значение ключа к существующему объекту JSON.
Я пробовал следующее, Но я получаю TypeError: 'str' object does not support item assignment:
import json
json_data = json.dumps({})
json_data["key"] = "value"
print 'JSON: ', json_data
5 ответов:
вы строите объект до кодирование его в строку JSON:
import json data = {} data['key'] = 'value' json_data = json.dumps(data)JSON-это сериализация формат, текстовые данные представляют структура. Сама по себе она не является такой структурой.
уже есть решение, которое позволяет построить словарь (или вложенный словарь для более сложных данных), но если вы хотите построить объект, то, возможно, попробуйте "ObjDict". Это дает гораздо больше контроля над json, который будет создан, например, сохраняя порядок, и позволяет строить как объект, который может быть предпочтительным представлением вашей концепции.
pip сначала установите objdict.
from objdict import ObjDict data = ObjDict() data.key = 'value' json_data = data.dumps()
вы можете создать словарь Python и сериализовать его в JSON в одной строке, и это даже не уродливо.
my_json_string = json.dumps({'key1': val1, 'key2': val2})
вы можете использовать EasyDict (doc):
EasyDict позволяет получить доступ к значениям dict в качестве атрибутов (работает рекурсивно). Javascript-подобные свойства точечная нотация для python диктует.
использование
>>> from easydict import EasyDict as edict >>> d = edict({'foo':3, 'bar':{'x':1, 'y':2}}) >>> d.foo 3 >>> d.bar.x 1 >>> d = edict(foo=3) >>> d.foo 3
все предыдущие ответы правильные, вот еще один и простой способ сделать это. Например, создайте структуру данных Dict для сериализации и десериализации объекта
(обратите внимание None является Null в python, и я намеренно использую это, чтобы продемонстрировать, как вы можете хранить null и конвертировать его в JSON null)
import json print('serialization') myDictObj = { "name":"John", "age":30, "car":None } ##convert object to json serilaized= json.dumps(myDictObj, sort_keys=True, indent=3) print(serilaized) ## now we are gonna convert json to object deserialization=json.loads(serilaized) print(deserialization)

Comments