将来自 http 请求的 json 响应过滤为仅特定值,然后 select 所有结果中最大的 'id' 值
Filter json response from http request to only specific value then select the largest 'id' value from all results
我有一个 Python 脚本,我想用 http get 过滤 Python 并且我想只过滤特定值的响应数据。 json 响应示例如下:
{
"id": "38",
"name": "Report1",
"description": "",
"reportDefinitionID": "-1",
"jobID": "105600",
"type": "csv",
"status": "Completed",
"creator": {
"id": "1",
"username": "btest",
"firstname": "bob",
"lastname": "test"
},
{
"id": "39",
"name": "Report2",
"description": "",
"reportDefinitionID": "-1",
"jobID": "113218",
"type": "csv",
"status": "Completed"
"creator": {
"id": "1",
"username": "btest1",
"firstname": "Bob",
"lastname": "test1"
},
"id": "49",
"name": "Report1",
"description": "",
"reportDefinitionID": "-1",
"jobID": "113219",
"type": "csv",
"status": "Completed"
"creator": {
"id": "1",
"username": "btest1",
"firstname": "Bob",
"lastname": "test1"
}
我想过滤上述 json 以仅按名称显示报告。例如,如果有一个 Python 过滤器,它只允许我按名称 "Report1" 过滤报告。如果我过滤 "Report1" 的名称。我希望在下面返回以下内容:
{
"id": "38",
"name": "Report1",
"description": "",
"reportDefinitionID": "-1",
"jobID": "105600",
"type": "csv",
"status": "Completed",
"creator": {
"id": "1",
"username": "btest",
"firstname": "bob",
"lastname": "test"
},
"id": "49",
"name": "Report1",
"description": "",
"reportDefinitionID": "-1",
"jobID": "113219",
"type": "csv",
"status": "Completed"
"creator": {
"id": "1",
"username": "btest1",
"firstname": "Bob",
"lastname": "test1"
}
对于脚本的最后部分,我想比较 'id' 字段以显示最大值,例如 id 38 与 id 49,然后输出 json 作为最大的值case id 49. 我想要输出
},
"id": "49",
"name": "Report1",
"description": "",
"reportDefinitionID": "-1",
"jobID": "113219",
"type": "csv",
"status": "Completed"
"creator": {
"id": "1",
"username": "btest1",
"firstname": "Bob",
"lastname": "test1"
}
对于最后一部分,我只想将 id 值“49”保存到 Python 中的变量。
到目前为止我得到的是:
response_data = response.json()
input_dict = json.dumps(response_data)
input_transform = json.loads(input_dict)
# Filter python objects with list comprehensions
sort1 = sorted([r.get("id") for r in input_transform if r.get("name") == "Report1"], reverse=True)[0]
# Print sorted JSON
print(sort1)
我更新了我的代码,现在我收到以下错误:
'str' object has no attribute 'get'
我研究过它,但不知道我现在在做什么以及如何克服它。
您需要在 listcomp 中获取 ID,如下所示:
sorted([r.get("id") for r in sample if r.get("name") == "Report1"], reverse=True)[0]
我有一个 Python 脚本,我想用 http get 过滤 Python 并且我想只过滤特定值的响应数据。 json 响应示例如下:
{
"id": "38",
"name": "Report1",
"description": "",
"reportDefinitionID": "-1",
"jobID": "105600",
"type": "csv",
"status": "Completed",
"creator": {
"id": "1",
"username": "btest",
"firstname": "bob",
"lastname": "test"
},
{
"id": "39",
"name": "Report2",
"description": "",
"reportDefinitionID": "-1",
"jobID": "113218",
"type": "csv",
"status": "Completed"
"creator": {
"id": "1",
"username": "btest1",
"firstname": "Bob",
"lastname": "test1"
},
"id": "49",
"name": "Report1",
"description": "",
"reportDefinitionID": "-1",
"jobID": "113219",
"type": "csv",
"status": "Completed"
"creator": {
"id": "1",
"username": "btest1",
"firstname": "Bob",
"lastname": "test1"
}
我想过滤上述 json 以仅按名称显示报告。例如,如果有一个 Python 过滤器,它只允许我按名称 "Report1" 过滤报告。如果我过滤 "Report1" 的名称。我希望在下面返回以下内容:
{
"id": "38",
"name": "Report1",
"description": "",
"reportDefinitionID": "-1",
"jobID": "105600",
"type": "csv",
"status": "Completed",
"creator": {
"id": "1",
"username": "btest",
"firstname": "bob",
"lastname": "test"
},
"id": "49",
"name": "Report1",
"description": "",
"reportDefinitionID": "-1",
"jobID": "113219",
"type": "csv",
"status": "Completed"
"creator": {
"id": "1",
"username": "btest1",
"firstname": "Bob",
"lastname": "test1"
}
对于脚本的最后部分,我想比较 'id' 字段以显示最大值,例如 id 38 与 id 49,然后输出 json 作为最大的值case id 49. 我想要输出
},
"id": "49",
"name": "Report1",
"description": "",
"reportDefinitionID": "-1",
"jobID": "113219",
"type": "csv",
"status": "Completed"
"creator": {
"id": "1",
"username": "btest1",
"firstname": "Bob",
"lastname": "test1"
}
对于最后一部分,我只想将 id 值“49”保存到 Python 中的变量。
到目前为止我得到的是:
response_data = response.json()
input_dict = json.dumps(response_data)
input_transform = json.loads(input_dict)
# Filter python objects with list comprehensions
sort1 = sorted([r.get("id") for r in input_transform if r.get("name") == "Report1"], reverse=True)[0]
# Print sorted JSON
print(sort1)
我更新了我的代码,现在我收到以下错误:
'str' object has no attribute 'get'
我研究过它,但不知道我现在在做什么以及如何克服它。
您需要在 listcomp 中获取 ID,如下所示:
sorted([r.get("id") for r in sample if r.get("name") == "Report1"], reverse=True)[0]