我正在努力使我的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","createdDateTime": "2019-03-14T20:31:55Z"},{"recordOne": [{"dataItemOne": "E123345","dataItemTwo": "2019-03-14T20:31:55Z"}]}]
>仅以大括号开头,即{“ messageId”:“ ID”而不是[{“ messageId”:“ ID”
>我无法将recordOne格式化为“ recordOne”:[{
>然后,将基于recordOne的attributeRecord输出为“ attributesRecord”:{
>然后在attributeRecords下嵌套字段
>记录recordTwo& record3我只能创建一个对象
谁能帮我,请问我是菜鸟吗?
注意:为了解决这个问题,我创建了一个单独的脚本,该脚本打印了正确的嵌套和格式,但是我很费力并被告知要使用该库,我知道该库存在局限性,因此不确定这是其中之一.
最佳答案
看一下下面的代码
import datetime
import json
dt = datetime.datetime.now().strftime("%Y-%m-%dT%H:%M:%SZ")
data = {'messageId': 'ID','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()用于写入文件.所以用那个.希望这对您有所帮助!