在Python中创建json对象

在Python中创建json对象,python,python-3.x,Python,Python 3.x,我需要创建一个json字符串,如下面的示例所示,我正在考虑使用一个dict,最终可以将json.dump转储到json字符串中。我将在一个循环中构建这个dict。这就是json的外观 { "big-data-list" :[ { "indexnum": "1", "components" : [ {

我需要创建一个json字符串,如下面的示例所示,我正在考虑使用一个dict,最终可以将json.dump转储到json字符串中。我将在一个循环中构建这个dict。这就是json的外观

{
"big-data-list" :[
    {
        "indexnum": "1",
        "components" : 
            [
                {
                    "key": "some-key1",
                    "item" :"item name",
                    "data" :"some string",
                }
            ]
    },
    {
        "indexnum": "2",
        "components" : 
            [
               {
                    "key": "some-key2",
                    "item" :"item name 2",
                    "data" :"some string 2",
               },
               {
                    "key": "some-key3",
                    "item" :"item name 3",
                    "data" :"some string 3",
               }

            ]
    }
}
下面是我在不使用循环的情况下尝试的内容,以了解事物是如何工作的

bigdata= {}
indexnum= {}
componentList = {}
indexnum["components"] = {}
 
indexnum["mileage"] = 20
componentList["key"] = "some-key1"
componentList["item"] = "item name" 
componentList["data"] = "some string" 
indexnum["components"][0] = componentList
componentList["key"] = "some-key2"
componentList["item"] = "item name 2" 
componentList["data"] = "some string 2" 
indexnum["components"][1] = componentList
print(json.dumps(indexnum))
我最终得到的结果如下:

{"components": {"0": {"key": "somekey2", "item": "fuel2"}, "1": {"key": "somekey2", "item": "fuel2"}}, "mileage": 20}

如何构建dict,以便以需要的方式转储它?有没有更好的方法来生成上面示例中所示的json对象?

您基本上只需要处理逻辑,将数据放入适当的
dict
s和
list
s结构中。
下面是将某些数据放入指定结构的循环示例:

>>#假设您最初的数据在以下列表中
... 列出\u组件的\u=[
…[(“some-key1”、“项目名称”、“某些字符串”)],
…[(“某些键2”、“项目名称2”、“某些字符串2”),
…(“某些键3”、“项目名称3”、“某些字符串3”)],
... ]
... bigdata={}
... 大数据[“大数据列表”]=[]
... 对于i,枚举中的组件(列出\u组件中的\u,1):
...     bigdata[“大数据列表”]。追加({
…“指数”:str(i),
…“组成部分”:[
…{k:v代表k,v在zip中([“键”、“项”、“数据”],组件)}
…用于组件中的组件]
...     })
... 打印(json.dumps(bigdata,缩进=4))
{
“大数据清单”:[
{
“indexnum”:“1”,
“组成部分”:[
{
“密钥”:“some-key1”,
“项目”:“项目名称”,
“数据”:“某些字符串”
}
]
},
{
“indexnum”:“2”,
“组成部分”:[
{
“密钥”:“some-key2”,
“项目”:“项目名称2”,
“数据”:“某些字符串2”
},
{
“密钥”:“some-key3”,
“项目”:“项目名称3”,
“数据”:“某些字符串3”
}
]
}
]
}

不太清楚你在问什么。JSON通常也是有效的Python(除了一些常量,如
true
/
true
),因此您可以直接写下所需内容。请注意,您的代码只有一个对象
componentList
,该对象被重复引用和修改–每个引用在转储时都会看到相同的最终状态。如果您使用的dict带有索引键和组件键,您确定不需要dict列表吗,或者是一个dicts列表列表?@MisterMiyagi我没有得到JSON是有效的Python。你是说python对象可以作为json转储吗?我想循环遍历一个大得多、嵌套得更多的源json对象,并创建一个包含较少字段的更平坦的json。我想先将源json转换为dict,然后在该dict上使用json转储。我在json对象
indexnum
上使用的add、update和append方法出现错误。我在这里进行了解释,但错误基本上是说,没有这样的方法来添加、更新或扩展对象。我的意思是,如果您想要“这个JSON”,您通常可以编写它—(几乎)相同的语法描述了等效的Python数据结构。例如,您可以只执行
indexnum[“components”][0]={“key”:“some-key1”,“item”:“item name”,“data”:“some string”}
,而不是(错误地!)使用
componentList