質問: json.loads(resp) print (resp, "utf-8") ``` ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/96b7261c07a20370ecb1ddd2ec3be2f5.png) 以上です。ご教授のほどよろしくお願いします。
回答: これはPython2ですね。Python3なら期待通りに日本語が表示されるはずです。 > > APIからの情報がどのようなjsonの構造になっているか見るため > > > 今のプログラムコードは、「APIで取得したJSON文字列をPythonの辞書データに変換して、その辞書をprintしている」状態です。目的を果たすためには2つのやりかたがありそうです。 1. `resp = json.loads(resp)` をせずにprintする。ここで「JSON文字列をPythonの辞書に変換」しているので、これをやらずにprintすれば、おそらく日本語文字列としてプリントできるでしょう。レスポンスデータのエンコード状態によってはうまくいかないかもしれません。 2. 内容確認の用途ということで、若干うそくさい方法ですが、 `print(repr(resp).decode('unicode-escape'))` でプリントしてみてください。ここで使うrespはjson.loads後のものです。 3. 2と組み合わせて、さらに見やすさを向上させるためにpprintを使う例も紹介します。 ``` >>> d = {'name': u'日本語名', 'age': 10, 'favorites': [u'リンゴ', u'みかん']} >>> d {'age': 10, 'name': u'\u65e5\u672c\u8a9e\u540d', 'favorites': [u'\u30ea\u30f3\u30b4', u'\u307f\u304b\u3093']} >>> print(repr(d).decode('unicode-escape')) {'age': 10, 'name': u'日本語名', 'favorites': [u'リンゴ', u'みかん']} >>> import pprint >>> print(pprint.pformat(d).decode('unicode-escape')) {'age': 10, 'favorites': [u'リンゴ', u'みかん'], 'name': u'日本語名'} ```