Python用于格式化和创建嵌套JSON文件

1 投票
2 回答
84 浏览
提问于 2025-04-14 17:36

我正在使用pandas的“to_json”选项来生成一些JSON文件,这些文件是在过滤数据框(DF)后得到的。输出结果如下:

[{"time":1677287760000,"x":0.001,"y":0.001,"z":0.0},{"time":1677632400000,"x":0.0,"y":0.0,"z":0.0},{"time":1677636000000,"x":0.0,"y":0.0,"z":0.0},{"time":1677639600000,"x":0.0,"y":0.0,"z":0.0}]

还有

[{"dt":20,"count":6},{"dt":23,"count":9},{"dt":11,"count":7},{"dt":2,"count":16},{"dt":17,"count":1},{"dt":20,"count":6}]

我想找一些方法来创建一个JSON文件,这个文件里要同时包含如下内容:

{
    "StatusTimes": [
        {
            "time": 1677287760000,
            "x": 0.001,
            "y": 0.001,
            "z": 0
        },
        {
            "time": 1677632400000,
            "x": 0,
            "y": 0,
            "z": 0
        },
        {
            "time": 1677636000000,
            "x": 0,
            "y": 0,
            "z": 0
        },
        {
            "time": 1677639600000,
            "x": 0,
            "y": 0,
            "z": 0
        }
    ],
    "DtCount": [
        {
            "dt": 20,
            "count": 6
        },
        {
            "dt": 23,
            "count": 9
        },
        {
            "dt": 11,
            "count": 7
        },
        {
            "dt": 2,
            "count": 16
        },
        {
            "dt": 17,
            "count": 1
        },
        {
            "dt": 20,
            "count": 6
        }
    ]
}

我尝试过使用json的dumps方法,然后更新时出现了错误。我在想要先创建一个JSON对象,然后根据需要更新值。也就是说,首先是

{
    "StatusTimes": [],
    "DtCount": []
}

给特定的内部JSON对象添加一个名称也没有成功。希望能得到帮助。

2 个回答

2

我觉得你可能想用 to_dict 这个函数,具体可以看看这个链接:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_dict.html#pandas-dataframe-to-dict

举个例子:

json_variable = {
    "StatusTimes": df1.to_dict('records'),
    "DtCount": df2.to_dict('records'),
}
with open('output.json', 'w') as fp:
    json.dump(json_variable, fp)

如果你想要格式更美观的 json:

json_variable = {
    "StatusTimes": df1.to_dict('records'),
    "DtCount": df2.to_dict('records'),
}
json_data = json.dumps(json_variable, indent=4)
with open('output.json', 'w') as f:
    f.write(json_data)
1

要创建一个json文件,你可以先建立一个字典,里面有一个叫“StatusTimes”的键。然后,你可以使用json.dumps()这个方法,把字典转换成一个符合JSON格式的字符串。下面是一个例子:

import json

# Your data
status_times = [{"time":1677287760000,"x":0.001,"y":0.001,"z":0.0},{"time":1677632400000,"x":0.0,"y":0.0,"z":0.0},{"time":1677636000000,"x":0.0,"y":0.0,"z":0.0},{"time":1677639600000,"x":0.0,"y":0.0,"z":0.0}]
dt_count = [{"dt":20,"count":6},{"dt":23,"count":9},{"dt":11,"count":7},{"dt":2,"count":16},{"dt":17,"count":1},{"dt":20,"count":6}]

# Create a dictionary
data = {
    "StatusTimes": status_times,
    "DtCount": dt_count
}

# Convert the dictionary to a JSON string
json_data = json.dumps(data, indent=4)

# Write the JSON string to a file
with open('output.json', 'w') as f:
    f.write(json_data)

这样就会在你当前的文件夹里生成一个名为output.json的JSON文件,里面有你想要的结构。

撰写回答