Python用于格式化和创建嵌套JSON文件
我正在使用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文件,里面有你想要的结构。