TypeError: list indices must be integers or slices, not str API, Json in Python

TypeError: list indices must be integers or slices, not str API, Json in Python

我正在尝试从 API 获取数据,但遇到错误。我需要这个 API.

的区块高度
import requests
import json


fetch_json_net = requests.get('https://api.minaexplorer.com/blocks?limit=1')
blk_height_net = fetch_json_net.json()["blocks"]["blockHeight"]
print(blk_height_net)

首先,我检查了什么 fetch_json_net.json() returns:

{'blocks': [{'blockHeight': 115919, 'canonical': True, ...

这意味着 blk_height_net["blocks"] 有一个 list 值,而不是 dictionary 值。

因此,可以得到blockHeight值,如下:

import requests
import json

fetch_json_net = requests.get('https://api.minaexplorer.com/blocks?limit=1')
blk_height_net = fetch_json_net.json()["blocks"][0]["blockHeight"]
print(blk_height_net)
# 115919

这是 JSON 数据。你正试图在字典中列出。如果您尝试切片方法从列表中获取数据,它将不起作用。 要从字典中获取数据,请使用带键的 get 方法。 这是获取第一个元素的“blockHeight”数据的代码。

方法一:

import requests
import json

fetch_json_net = requests.get('https://api.minaexplorer.com/blocks?limit=1')
blk_height_net = fetch_json_net.json()["blocks"][0]["blockHeight"]
print(blk_height_net)
115919

另一种方法:

import requests
import json


fetch_json_net = requests.get('https://api.minaexplorer.com/blocks?limit=1')
blk_height_net = fetch_json_net.json().get("blocks")[0].get('blockHeight')
print(blk_height_net)
115919