【问题标题】:How to parse JSON with a list of lists?如何使用列表解析 JSON?
【发布时间】:2022-01-15 02:07:36
【问题描述】:

我正在尝试解析 API 返回给我的“复杂”JSON 字符串。

看起来像这样:

{
  "data":[
    ["Distance to last strike","23.0","miles"],
    ["Time of last strike","1/14/2022 9:23:42 AM",""],
    ["Number of strikes today","1",""]
  ]
}

虽然最终目标是提取距离、日期/时间以及计数,但现在我只是想成功获得距离。

我的python脚本是:

import requests
import json
response_API = requests.get('http://localhost:8998/api/extra/lightning.json')
data = response_API.text
parse_json = json.loads(data)
value = parse_json['Distance to last strike']
print(value)

这不起作用。如果我将value 行更改为

value = parse_json['data']

然后返回我上面列出的整个字符串。

我希望这只是一个简单的格式问题。有什么建议吗?

【问题讨论】:

  • 试图访问一个字典/列表项不是解析。 parse_json['data'] 返回一个列表而不是字符串。
  • 很公平。这就是我问这个问题的原因。正如我所说,我是新手,所以我试图理解这一切。
  • 两个要点:1) requests 内置了 JSON 支持;只需阅读response_API.json 而不是response_API.text。 2) 没关系您通过解析 JSON 获得数据。它只是嵌套字典和/或列表的结构,并且您与它进行交互就像您以任何其他方式获得该结构 /i>。和一个观察:“然后我上面列出的整个字符串被返回。”不,不是,假设输入和代码实际上与您描述的一样。将返回一个 list,其中包含 3 个本身就是列表的元素。

标签: python json python-3.x


【解决方案1】:

您有一个带有列表列表的对象。如果你获取

value = parse_json['data']

然后您将拥有一个包含三个列表的列表。所以:

print(value[0][1])

将打印“23.0”。

【讨论】:

  • 谢谢蒂姆。我将如何打印日期/时间值? (我可以推断您的答案以弄清楚如何打印最终的“计数”值)
  • @sbagnato 你明白value[0][1] 是什么意思吗?它按索引访问列表项。 value[0] 正在访问data 的第一项,然后[1] 访问value[0] 的第二项。我建议将其拆分为 distance = value[0] 和 distance[1] 以清楚地看到它。一旦你理解了这一点,你应该能够打印出那个 JSON 上的任何值。
猜你喜欢
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多