我正在努力使自己的Python代码能够为我的JSON消息输出正确的嵌套和格式。我的问题是我无法按照给出示例JSON的方式将对象嵌套在JSON中,因为这只是源系统将如何接受它。我已经在线阅读了文档和其他教程,但找不到任何解决该问题的方法。
这是我必须使用的示例JSON,并且包含正确的格式:
{"messageId": "ID,"messageType": "Type","createdDateTime": "2019-01-01T10:10:10Z","recordOne": [{"dataItemOne": "E123345","dataItemTwo": "2019-01-01T12:12:12Z","attributesRecord": {"attributesOne": 22,"attributesTwo": 24,},"recordTwo": {"dataItemOne": "L22","dataItemTwo": "EL","dataItemThree": "ADDFES334S",},"recordThree": [{"itemOne": "P44587"}]}]}
这是我的代码
import datetime
import json
datetime = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")
data = {'messageId': 'ID',
'messageType': 'Type',
'createdDateTime': datetime}
data1 = {'recordOne': []}
data1['recordOne'].append({
'dataItemOne': 'E123345',
'dataItemTwo': datetime,
})
datas = [data, data1]
with open('mata.json', 'w') as outfile:
data = json.dumps(data)
json.dump(datas, outfile)
这提供了我这种类型的JSON:
[{"messageId": "ID","messageType": "Type","createdDateTime": "2019-03-14T20:31:55Z"}, {"recordOne": [{"dataItemOne": "E123345","dataItemTwo": "2019-03-14T20:31:55Z"}]}]
我的主要问题是我无法将文件输出到:
有人可以帮我吗,请问我是菜鸟吗?
注意-为了解决这个问题,我创建了一个单独的脚本,该脚本打印了正确的嵌套和格式,但是我很费力并被告知要使用该库,我知道该库存在局限性,因此不确定其中之一。
答案 0 :(得分:2)
看看下面的代码
import datetime
import json
dt = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")
data = {'messageId': 'ID',
'messageType': 'Type',
'createdDateTime': dt}
data['recordOne'] = [{
'dataItemOne': 'E123345',
'dataItemTwo': dt
}]
# since recordOne contains a list, we use [0] to paste stuff inside it
data['recordOne'][0]['attributesRecord'] = {
'attributesOne': 22,
'attributesTwo': 24
}
data['recordTwo'] = {
...
}
# and so on and so forth
with open('mata.json', 'w') as outfile:
json.dump(data, outfile)
要摆脱的主要问题是,如果要向字典中添加某些内容,只需编写data['recordOne']
和data['recordOne'][0]['attributesRecord']
即可创建一个新键,而在此同时,也可以为其分配所需的值。
如果要保留嵌套,则只需继续添加键级别。请记住,如果要将字典放入列表中,则必须使用它们各自的索引(例如[0]
)访问列表内的键值对
由于您的某些词典也必须在列表中,因此我将其添加为此类(请参阅第一个data['recordOne']
)。
最后,json.dumps()
用于创建字符串,而json.dump()
用于写入文件。所以用那个。希望这会有所帮助!