我是Python的新手,我正在使用JSON数据。我想通过向现有JSON对象添加一些键值来动态构建一个JSON对象。

我尝试了以下,但我得到TypeError: 'str'对象不支持项赋值:

import json

json_data = json.dumps({})
json_data["key"] = "value"

print 'JSON: ', json_data

当前回答

你可以使用EasyDict库(doc):

EasyDict允许将dict值作为属性访问(递归地工作)。python字典的类似javascript的属性点表示法。 用途不同 将easydict导入为敕令 >>> d =敕令({'foo':3, 'bar':{'x':1, 'y':2}}) > > > d.foo 3. > > > d.bar.x 1 >>> d =诏书(foo=3) > > > d.foo 3.


(安装):

PIP安装easydict

其他回答

您可以创建Python字典,并在一行中将其序列化为JSON,它甚至不难看。

my_json_string = json.dumps({'key1': val1, 'key2': val2})

你可以使用EasyDict库(doc):

EasyDict允许将dict值作为属性访问(递归地工作)。python字典的类似javascript的属性点表示法。 用途不同 将easydict导入为敕令 >>> d =敕令({'foo':3, 'bar':{'x':1, 'y':2}}) > > > d.foo 3. > > > d.bar.x 1 >>> d =诏书(foo=3) > > > d.foo 3.


(安装):

PIP安装easydict

在将对象编码为JSON字符串之前构建对象:

import json

data = {}
data['key'] = 'value'
json_data = json.dumps(data)

JSON是一种序列化格式,文本数据表示一种结构。它本身并不是那种结构。

你可以使用jsonCreater模块创建json文件

        `jsonCreator.createJson(dict,”fileName”,[“path”])`

前面所有的答案都是正确的,这里还有一个简单的方法。例如,创建Dict数据结构来序列化和反序列化对象

(注意None在python中是Null,我故意用这个来演示如何存储Null并将其转换为json Null)

import json
print('serialization')
myDictObj = { "name":"John", "age":30, "car":None }
##convert object to json
serialized= json.dumps(myDictObj, sort_keys=True, indent=3)
print(serialized)
## now we are gonna convert json to object
deserialization=json.loads(serialized)
print(deserialization)