你得到的 JSON 响应是一个只有一个 key:value 的字典。keybodies和 value 是一个字典列表。
import requests
from pprint import pprint
# Get request with JSON response.
response = requests.get("https://api.le-systeme-solaire.net/rest/bodies/")
data = response.json()
# Make a list with the planets.
planets = [item for item in data['bodies'] if item.get("isPlanet")]
pprint(planets)
输出
[{'alternativeName': 'A899 OF - 1943 XB',
'aphelion': 445410000,
'aroundPlanet': None,
'axialTilt': 3,
'density': 2.161,
'dimension': '',
'discoveredBy': 'Giuseppe Piazzi',
'discoveryDate': '01/01/1801',
'eccentricity': 0.07582,
'englishName': '1 Ceres',
'equaRadius': 487.0,
'escape': 510.0,
'flattening': 0.9619,
'gravity': 0.28,
'id': 'ceres',
'inclination': 10.593,
'isPlanet': True,
'mass': {'massExponent': 20, 'massValue': 9.393},
'meanRadius': 476.2,
'moons': None,
'name': '(1) Cérès',
'perihelion': 382620000,
'polarRadius': 455.0,
'rel': 'https://api.le-systeme-solaire.net/rest/bodies/ceres',
'semimajorAxis': 413690250,
'sideralOrbit': 1681.63,
'sideralRotation': 9.07,
'vol': {'volExponent': 9, 'volValue': 4.21}},
{'alternativeName': '2003 UB313',
'aphelion': 14594512904,
'aroundPlanet': None,
'axialTilt': 0,
'density': 2.52,
'dimension': '',
'discoveredBy': 'Michael E. Brown, Chadwick Trujillo, David L. Rabinowitz',
'discoveryDate': '05/01/2005',
'eccentricity': 0.44068,
'englishName': '136199 Eris',
'equaRadius': 0.0,
'escape': 1380.0,
'flattening': 0.0,
'gravity': 0.82,
'id': 'eris',
'inclination': 44.0445,
'isPlanet': True,
'mass': {'massExponent': 22, 'massValue': 1.66},
'meanRadius': 1163.0,
'moons': [{'moon': 'Dysnomie',
'rel': 'https://api.le-systeme-solaire.net/rest/bodies/dysnomie'}],
'name': '(136199) Éris',
'perihelion': 5765732799,
'polarRadius': 0.0,
'rel': 'https://api.le-systeme-solaire.net/rest/bodies/eris',
'semimajorAxis': 10180122852,
'sideralOrbit': 203830.0,
'sideralRotation': 25.92,
'vol': {'volExponent': 9, 'volValue': 6.59}},
... rest of list elements skipped for brevity ...
]
此外 - API 为您提供了根据特定标准过滤您获得的数据的选项(即您可以过滤您在响应中获得的数据),但是您是一个错误filter[]=isPlanet,eq,true(请参阅https://github.com/systeme- solaire/api-rest/issues/3)。
import requests
# Get a list of planets and convert from Json.
params = {'filter[]':'isPlanet,neq,false'}
response = requests.get("https://api.le-systeme-solaire.net/rest/bodies", params=params)
data = response.json()
planets = data.get('bodies')
# print just len of planets list
print(len(planets))