json - 遍历 JSON 的各项并获取最新记录
问题描述
我有一个 JSON 字符串,我希望有 1 或 2 条最新记录取决于我的 JSON 的时间戳。
示例如下所示
[
{
"timestamp": 1612283061106,
"user": "email1",
"ipAddress": "IP1",
"resourceType": "Login",
"resourceName": "Name1"
},
{
"timestamp": 1612282839939,
"user": "email1",
"ipAddress": "Ip3",
"resourceType": "Login",
"resourceName": "name1"
},
{
"timestamp": 1612279167153,
"user": "email2",
"ipAddress": "Ip2",
"resourceType": "Login",
"resourceName": "name2"
},
{
"timestamp": 1612279151891,
"user": "email1",
"ipAddress": "Ip1",
"resourceType": "Login",
"resourceName": "name1"
}
]
我希望我的 JSON 字符串的输出看起来像这样
[ {
"timestamp": 1612279167153,
"user": "email2",
"ipAddress": "Ip2",
"resourceType": "Login",
"resourceName": "name2"
},
{
"timestamp": 1612279151891,
"user": "email1",
"ipAddress": "Ip1",
"resourceType": "Login",
"resourceName": "name1"
}
]
谢谢
解决方案
首先,您提到的 JSON 字符串不是有效的 json,因为末尾有一个 ","," }, ]
还有一个 "," 在Name1", }
.
假设您已更正 JSON 字符串。现在让我们看看解决方案。但是您没有正确提及您想要多少最新记录。因此,相应地更改以下代码中提到的行。
import json
inp = '''[ { "timestamp": 1612283061106, "user": "email1", "ipAddress": "IP1", "resourceType": "Login", "resourceName": "Name1" },
{ "timestamp": 1612282839939, "user": "email1", "ipAddress": "Ip3", "resourceType": "Login", "resourceName": "name1" },
{ "timestamp": 1612279167153, "user": "email2", "ipAddress": "Ip2", "resourceType": "Login", "resourceName": "name2" },
{ "timestamp": 1612279151891, "user": "email1", "ipAddress": "Ip1", "resourceType": "Login", "resourceName": "name1" } ]'''
inp_dict = json.loads(inp)
inp_dict.sort(key= lambda x: x['timestamp'])
output = inp_dict[0:2] # <---- Change 2 to the number of latest records you want.
print(json.dumps(output))
输出 :
[{"resourceName": "name1", "user": "email1", "resourceType": "Login", "ipAddress": "Ip1", "timestamp": 1612279151891}, {"resourceName": "name2
", "user": "email2", "resourceType": "Login", "ipAddress": "Ip2", "timestamp": 1612279167153}]
推荐阅读
- python - Html/Django - 从磁盘故障加载静态图像
- c++ - 提升堆栈跟踪不显示函数名称和行号
- ios - IOS/Objective-C/Swift:在 Swift 中处理 UnsafePointer
- visual-studio - Visual Studio 中的损坏项目 - 已添加密钥
- mysql - 连接两个表并按单列排序
- node.js - 在 Visual Studio 代码中运行节点 http 服务器的步骤
- java - Azure java函数发布方法,发送表单数据
- angular - ng build --prod 和 ng build --env=prod 有什么区别?
- sql-server - 如何在 SQL 中将 2411(其中 24 是日期,11 是月份)转换为日期格式 2018-11-24
- firebase - Flutter firebase 手机登录需要热重启才能进行身份验证