自称フルスタックエンジニアのぶろぐ。

pythonやreactや、gcpやawsなどなどについて書いていこうかと思います。

pythonで外部APIをコールした結果が、バイナリで帰ってくる時の対応

python3で外部APIをコールした結果が、バイナリで帰ってくる時の対応

import ast
import json, requests

token_url = 'https://xxxxxxxxx/api-token-auth/'

result = requests.post(token_url, data={
    'username': 'xxxxx',
    'password': 'xxxxx'
})
token = json.loads(result.content).get('token')

上記では、 ERROR the JSON object must be str, not 'bytes' となる。

回避策として、

import ast
import requests

token_url = 'https://xxxxxxxxx/api-token-auth/'

result = requests.post(token_url, data={
    'username': 'xxxxx',
    'password': 'xxxxx'
})
result = ast.literal_eval(result.content.decode('utf-8'))
token =result.get('token')
  • 下記で、バイナリを文字列に変換する。
    result.content.decode('utf-8')

  • 変換後の情報を辞書化する。
    ast.literal_eval(xxx)