本文介绍在Python中如何解析JSON文件,并将JSON中的数据添加到Excel中。
准备一个JSON格式的数据文件,例如:
[{
"_ch": 11,
"id": "001",
"title": "1回复@卧牛先生HY: 跑赢沪深300不少//@卧牛...",
"content": "包括2月沪深300都红了,它还是绿的……压力之大可想而知,唉,基金经理真不是人干的活啊!",
"abstract": "唉,基金经理真不是人干的活啊!",
"content_raw": "它还是绿的……压力之大可想而知,唉,基金经理真不是人干的活啊!",
"publish_time": 1653697225000,
"update_time": 1653697242000,
"gather_time": 1653697242000,
"insert_time": 1653697242000,
"picture_urls": ["https://assets.imedao.com/ugc/images/face/emoji_05_struggle.png", "https://assets.imedao.com/ugc/images/face/emoji_05_struggle.png"]
},{
"_ch": 11,
"id": "002",
"title": "2回复@卧牛先生HY: 跑赢沪深300不少//@卧牛...",
"content": "包括2月沪深300都红了,它还是绿的……压力之大可想而知,唉,基金经理真不是人干的活啊!",
"abstract": "唉,基金经理真不是人干的活啊!",
"content_raw": "它还是绿的……压力之大可想而知,唉,基金经理真不是人干的活啊!",
"publish_time": 1653697225000,
"update_time": 1653697242000,
"gather_time": 1653697242000,
"insert_time": 1653697242000,
"picture_urls": ["https://assets.imedao.com/ugc/images/face/emoji_05_struggle.png", "https://assets.imedao.com/ugc/images/face/emoji_05_struggle.png"]
}, {
"_ch": 11,
"id": "003",
"title": "3回复@卧牛先生HY: 跑赢沪深300不少//@卧牛...",
"content": "包括2月沪深300都红了,它还是绿的……压力之大可想而知,唉,基金经理真不是人干的活啊!",
"abstract": "唉,基金经理真不是人干的活啊!",
"content_raw": "它还是绿的……压力之大可想而知,唉,基金经理真不是人干的活啊!",
"publish_time": 1653697225000,
"update_time": 1653697242000,
"gather_time": 1653697242000,
"insert_time": 1653697242000,
"picture_urls": ["https://assets.imedao.com/ugc/images/face/emoji_05_struggle.png", "https://assets.imedao.com/ugc/images/face/emoji_05_struggle.png"]
}
]
编写代码,如下所示:
import json
import time
import pandas
import datetime
#以下为引入JSON文件,且配置只读、编码
jsonObj = json.load(
open('110.json', 'r', encoding="utf-8"))
#以下为定义一个字典,以及需要获取的字段名称
dataOutput = {
"id": [],
"title": [],
"content": [],
"publish_time": [],
"update_time": [],
"gather_time": [],
"insert_time": [],
"board_name": [],
"url": []
}
indexNUm = 1
#通过循环来获取JSON中的数据,并添加到字典中
for line in jsonObj:
dataOutput["id"].append(line["id"]) #获取JSON中的id,并存入字典中的id内
dataOutput["title"].append(line["title"])
dataOutput["content"].append(line["content"])
dataOutput["publish_time"].append(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(line["publish_time"]/1000))) #对于JSON中的时间戳数据,可以通过该方法转换为具体的时间
# dataOutput["publish_time"].append(line["publish_time"]) #也可以不用转换时间,直接获取
dataOutput["update_time"].append(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(line["update_time"]/1000)))
dataOutput["gather_time"].append(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(line["gather_time"]/1000)))
# dataOutput["gather_time"].append(line["gather_time"])
dataOutput["insert_time"].append(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(line["insert_time"]/1000)))
dataOutput["board_name"].append(line["board_name"])
dataOutput["url"].append(line["url"])
print("正在处理第 "+str(indexNUm) + "行") #打印正在执行的行数
indexNUm += 1
print(dataOutput)
print("正在写入Excel")
#定义当前时间
currentTime = datetime.datetime.now()
dataForm = pandas.DataFrame(dataOutput)
dataForm.to_excel("转换结果-test" +
currentTime.strftime("%Y%m%d")+".xlsx")
print("写入完成")
脚本运行后的数据如下: