1. ホーム
  2. python

[解決済み】TypeError:JSONオブジェクトは'bytes'ではなく'str'でなければならない

2022-01-25 06:33:44

質問

次のような、非常に基本的なコードを投げています。 TypeError: the JSON object must be str, not 'bytes'

import requests
import json

url = 'my url'
user = 'my user'
pwd = 'my password'

response = requests.get(url, auth=(user, pwd))

if(myResponse.ok):
    Data = json.loads(myResponse.content)

以下のように、Data変数にdecodeを設定しようとしますが、同じエラーが投げられます。 jData = json.loads(myResponse.content).decode('utf-8')

何か提案はありますか?

解決方法は?

プレ {コード

順番を間違えただけだろ、無実の罪で。


(詳細な回答)。 wimさんが丁寧に指摘してくれたように、まれにUTF-16やUTF-32を選択することもあります。 このようなケースはあまりないでしょう。そのようなシナリオでは、開発者は貴重な帯域幅を意識的に捨てることになるからです。ですから、もしエンコーディングの問題にぶつかったら、utf-8 を 16 や 32 などに変更すればいいのです。

これには、いくつかの解決策があります。 リクエストの組み込みの json.loads(myResponse.content.decode('utf-8')) という関数があります。

.json()

または、次の方法で文字検出を行うこともできます。 {コード . Chardetは、ある研究に基づいて開発されたライブラリです。 このライブラリは1つの機能を持っています。 myResponse.json() . Detectは、最も一般的なエンコーディングを検出し、それを使って文字列をエンコードすることができます。

chardet