Как динамически построить объект 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
511   5  

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)

enter image description here

Comments

    Ничего не найдено.