Ошибка при запуске python-скрипта

Есть у меня код, который выдаёт нужную мне информацию из API. На Windows запускается прекрасно, но на Debian 11 т.е. на сервере - ни в какую, и выдаёт данную ошибку:

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/requests/models.py", line 971, in json
    return complexjson.loads(self.text, **kwargs)
  File "/usr/local/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/local/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/lib/python3.10/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)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/YumaBot/game_getMembers.py", line 10, in <module>
    data = r.json()
  File "/usr/local/lib/python3.10/site-packages/requests/models.py", line 975, in json
    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

UPD: Мой код:

import requests

token = "mytoken"
server = "9"
fraction = "3"

r = requests.get(f"https://api2.gerstlix.com/v1/game.getMembers/?token={token}&server={server}&fraction={fraction}")


data = r.json()
players = data['data']['players']

serverId = data['data']['serverId']
serverName = data['data']['serverName']
fractionId = data['data']['fractionId']
fractionName = data['data']['fractionName']
playersLastUpdate = data['data']['playersLastUpdate']
playersCount = data['data']['playersCount']

playersInfo = ""
for player in players:
    if player["gameId"] == -1 and player["level"] == -1:
        player["gameId"],player["level"] = "не в сети","не в сети"
    playersInfo += f'{player["nickname"]}({player["accountId"]}) [R: {player["rank"]} | {player["rankLabel"]}] | Leader?: {player["isLeader"]} | online?: {player["isOnline"]} | in game: id:{player["gameId"]} / lvl: {player["level"]}\n'

result = f"""
Сервер: {serverName} ({serverId})
Информация об организации: {fractionName} ({fractionId}):
Всего игроков: {playersCount} (Last update: {playersLastUpdate})
Состав:
{playersInfo}
"""

print(result)

И в таком формате выглядит ответ от API: введите сюда описание изображения


Ответы (1 шт):

Автор решения: Amgarak

Проверьте кодировку вашего файла. Это скорее всего решит вашу проблему.

with open("ваш_файл.json", encoding='utf-8', errors='ignore') as json_data:
     data = json.load(json_data, strict=False)

Хорошо, допустим это был requests, то можно попробовать через loads:

json_data = полученный json. 
data = json.loads(json_data, encoding='utf-8')

Можно так же поиграться с кодировками, например установить cp1251 вместо utf-8

Давайте попробуем так:

r = requests.get(url)
r.encoding = 'utf-8' #Принудительно укажем кодировку, так же попробуйте другие кодировки
data = r.json()

На крайний случай попробуйте так:

r.content.decode('utf-8')

Проверьте не пустой ли ответ приходит:

    if (r.status_code == 200):  
        data = r.json() 
    else:
        print("всё плохо")
→ Ссылка