Python如何从无序JSON中按日期查询获取最新条目
从JSON数组中提取日期最新条目的方法
你只需要将JSON字符串解析为对应语言的数组/列表结构,通过一次遍历对比date字段的时间大小即可得到结果,核心逻辑是把日期字符串转换为可比较的时间类型,再取最大值对应的条目即可。
示例JSON结构
注意你给出的示例为类JSON格式,标准JSON需要使用双引号包裹字符串,解析时如果是JSON字符串需要先做格式校验:
[ { "bytes": 2853922, "date": "2021-11-08 12:03", "name": "dummy1.mp4", "size": "2.7MB", "url": "/downloads/timelapse/dummy1.mp4" }, { "bytes": 1402663, "date": "2021-11-18 11:57", "name": "dummy2.mp4", "size": "1.3MB", "url": "/downloads/timelapse/dummy2.mp4" }, { "bytes": 1318887, "date": "2021-11-11 11:28", "name": "dummy3.mp4", "size": "1.3MB", "url": "/downloads/timelapse/dummy3.mp4" } ]
常用语言实现
Python实现
直接使用内置的max函数指定对比的key即可,时间复杂度为O(n),仅需遍历一次数组:
from datetime import datetime # 此处为解析后的JSON数组 data = [ # 上述示例数组内容 ] latest_entry = max(data, key=lambda item: datetime.strptime(item["date"], "%Y-%m-%d %H:%M")) print(latest_entry)
JavaScript实现
使用reduce方法遍历数组对比时间戳即可:
// 此处为解析后的JSON数组 const data = [ // 上述示例数组内容 ] const latestEntry = data.reduce((prev, current) => { return new Date(current.date) > new Date(prev.date) ? current : prev }) console.log(latestEntry)
注意:如果你的日期格式和示例不同,需要对应调整时间解析的规则,避免出现解析错误。如果数组为空需要先做异常判断,避免运行报错。
内容的提问来源于stack exchange,提问作者Felix Dango
相关产品推荐
相关产品推荐

