python - 如何正确解析带有重复键的 JSON 文件?
问题描述
我有一个 JSON 字符串,如:
{
"result":
{
"event": {"date": "12/12/13", "desc": "test1"},
"event": {"date": "12/12/14", "desc": "test2"},
"event": {"date": "12/12/15", "desc": "test3"}
},
"result":
{
"event": {"date": "12/12/13", "desc": "test5"},
"event": {"date": "12/12/14", "desc": "test6"},
"event": {"date": "12/12/15", "desc": "test7"}
}
}
我想在所有结果中获取每个事件的所有日期和描述,该怎么做?
解决方案
您可以使用ijson包:
import ijson
with open('data.json') as f:
events = list(ijson.items(f, 'result.event'))
print(events)
输出:
[{'date': '12/12/13', 'desc': 'test1'}, {'date': '12/12/14', 'desc': 'test2'}, {'date': '12/12/15', 'desc': 'test3'}, {'date': '12/12/13', 'desc': 'test5'}, {'date': '12/12/14', 'desc': 'test6'}, {'date': '12/12/15', 'desc': 'test7'}]
不过,我认为在 JSON 文件中应该避免这种重复的键。
推荐阅读
- arrays - VBA代码将范围作为数组粘贴到Excel中?
- twitter-bootstrap - 如何在引导程序中调整图像大小?
- docker - 无法访问 docker-compose 中暴露端口上的端点,但可以 ping 该容器
- javascript - MongoDB 初始化脚本未使用 docker-compose 启动
- javascript - 不同元素的 JavaScript 文本到语音
- node.js - 确保 /usr/local/bin 在你的 $path 中
- docker - Docker 反向代理、Nginx、MEAN 堆栈
- css - 我在开发人员工具上找不到活动输入边框属性
- c++ - 使用默认构造函数强制未初始化的成员声明
- wpf - 扩展器中的 DataGrid 与复杂标题未绑定