将来自 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]