将http请求中的json响应过滤为仅特定值,然后从所有结果中选择最大的“id”值

2024-10-01 17:23:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python脚本,我想用httpget过滤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,以显示最大值(在本例中为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'

我研究了一下,不知道我现在在做什么,也不知道如何克服它


Tags: csvnameidjsontypestatususernamedescription

热门问题