Python 来自None的JSONDecodeError(“预期值”,s,err.value)

Python 来自None的JSONDecodeError(“预期值”,s,err.value),python,json,Python,Json,我试图从pokeapi中获得一些信息,但在搜索某些pokemons的形式时,我一直得到JSONDecodeError。当我搜索charmander时,它起作用,但当我搜索pidgey时,它不起作用。 代码如下: pokename = input('Digite o nome do Pokémon que você deseja consultar: ') formas = requests.get(f'https://pokeapi.co/api/v2/pokemon-form/{pokena

我试图从pokeapi中获得一些信息,但在搜索某些pokemons的形式时,我一直得到JSONDecodeError。当我搜索charmander时,它起作用,但当我搜索pidgey时,它不起作用。 代码如下:

pokename = input('Digite o nome do Pokémon que você deseja consultar: ')

formas = requests.get(f'https://pokeapi.co/api/v2/pokemon-form/{pokename}/')
forms_data = formas.json()
下面是错误:

Digite o nome do Pokémon que você deseja consultar: pidgey
Traceback (most recent call last):
File "c:/Users/perei/Evylla/DEV/python/pokemons.py", line 14, in <module>
status_data = status.json()
File "C:\Users\perei\AppData\Local\Programs\Python\Python38-32\lib\site-packages\requests\models.py", 
line 898, in json
return complexjson.loads(self.text, **kwargs)
File "C:\Users\perei\AppData\Local\Programs\Python\Python38-32\lib\json\__init__.py", line 357, in 
loads
return _default_decoder.decode(s)
File "C:\Users\perei\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py", line 337, in 
decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\perei\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py", line 355, in 
raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Digite o nome do Pokémon que vocêdeseja consultar:pidgey
回溯(最近一次呼叫最后一次):
文件“c:/Users/perei/Evylla/DEV/python/pokemons.py”,第14行,在
status_data=status.json()
文件“C:\Users\perei\AppData\Local\Programs\Python\Python38-32\lib\site packages\requests\models.py”,
第898行,json格式
返回complexjson.load(self.text,**kwargs)
文件“C:\Users\perei\AppData\Local\Programs\Python\Python38-32\lib\json\\ u_init\u_.py”,第357行,在
荷载
返回\u默认\u解码器。解码
文件“C:\Users\perei\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py”,第337行,在
解码
obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
文件“C:\Users\perei\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py”,第355行,在
原始解码
从None引发JSONDecodeError(“预期值”,s,err.value)
json.decoder.JSONDecodeError:预期值:第1行第1列(字符0)

问题可能在于您的输入
pokename
。对于格式错误的
pokename
api可能返回404

请尝试下面的代码

import requests

#replace xx by bulbasaur and the code will print JSON.
k = requests.get('https://pokeapi.co/api/v2/pokemon-form/xx') 
if k.status_code == 200:
    print(k.json())
else:
    print("error",k.status_code)

很明显,您没有得到JSON响应-您是否尝试过打印响应,或将其保存到文件(在尝试无效地解码为JSON之前)以便检查响应?我不只是尝试将其解码为JSON,因为我认为它很漂亮,我还有其他与此完全相同的请求。这是唯一一个给我一个错误,我想知道为什么,因为打开链接并用“pokename”替换我想要的pokemon的名字是有效的。但是我已经弄明白了,谢谢。响应不会被解码为JSON:您所要做的就是检查响应以找出原因。