Попытка распечатать JSON из декодированного base64 - Python - PullRequest
0 голосов
/ 29 августа 2018

Итак, я пытался использовать base64 для декодирования значения и затем иметь возможность использовать эти декодированные строки, чтобы распечатать каждую для себя.

В основном мой декодированный base64:

{
  "trailerColor": "FF0017",
  "complete": 59,
  "bounds": [
    25,
    65,
    62,
    5
  ],
  "Stamina": 0,
  "cardId": "d4fc5458-3481-4ce6-be32-acd03c2cfd16",
}

Я использую этот код, который получает нужные метаданные, а затем конвертирует их в UTF-8 в основном с кодом ниже.

   resp = requests.get(url, headers=headers, json=json, timeout=6)

    getmetadata = resp.json()['objects'][1]['metadata']
    newdata = base64.b64decode(getmetadata).decode('UTF-8')

    print(newdata)

Однако, как правило, если бы я сделал newdata['trailerColor'], он мог бы распечатывать только трейлерColor, если я это сделал, но я получаю за ошибку:

TypeError: string indices must be integers

Как я могу решить эту проблему, печатая все, что я хочу, через этот json?

EDIT:

Process Process-1:
Traceback (most recent call last):
  File "C:\Users\AppData\Local\Programs\Python\Python36\lib\multiprocessing\process.py", line 249, in _bootstrap
    self.run()
  File "C:\Users\AppData\Local\Programs\Python\Python36\lib\multiprocessing\process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\TEST.py", line 194, in script
    print(newdata['complete'])
TypeError: string indices must be integers

1 Ответ

0 голосов
/ 29 августа 2018
resp = requests.get(url, headers=headers, json=json, timeout=6)

getmetadata = resp.json()['objects'][1]['metadata']
newdata = base64.b64decode(getmetadata).decode('UTF-8')
data = json.loads(newdata)
print(data['complete'])

base64.b64decode(str).decode(str) возвращает строку str. Если эта строка должна быть json, вы можете использовать json.loads для преобразования строки str в dict, где вы можете получить одно значение по его ключу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...