在Python中嵌套JSON库

我正在努力使我的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()用于写入文件.所以用那个.希望这对您有所帮助!

相关文章

在这篇文章中,我们深入学习了XPath作为一种常见的网络爬虫技巧。XPath是一种用于定位和选择XML文档中特...
祝福大家龙年快乐!愿你们的生活像龙一样充满力量和勇气,愿你们在新的一年里,追逐梦想,勇往直前,不...
今天在爬虫实战中,除了正常爬取网页数据外,我们还添加了一个下载功能,主要任务是爬取小说并将其下载...
完美收官,本文是爬虫实战的最后一章了,所以尽管本文着重呈现爬虫实战,但其中有一大部分内容专注于数...
JSON是一种流行的数据传输格式,Python中有多种处理JSON的方式。官方的json库是最常用的,它提供了简单...
独立样本T检验适用于比较两组独立样本的均值差异,而配对T检验则适用于比较同一组样本在不同条件下的均...