書式 - json 配列 取得




HTTPResponseオブジェクト-JSONオブジェクトは 'bytes'ではなくstrでなければなりません (3)

HTTPResponseを取得しているHTTPResponseTornado.escapeとそのjson_decode()を使用して、JSON strignを辞書に変換できます。

from tornado import escape

body = escape.json_decode(body)

マニュアルから:

tornado.escape.json_decode(value)

与えられたJSON文字列のPythonオブジェクトを返します。

私はPython 3で動作するlibpynexmoという小さなPythonライブラリを更新しようとしていました。

私はこの機能に立ち往生してきました:

def send_request_json(self, request):
    url = request
    req =  urllib.request.Request(url=url)
    req.add_header('Accept', 'application/json')
    try:
        return json.load(urllib.request.urlopen(req))
    except ValueError:
        return False

これに到達すると、jsonは次のように応答します。

TypeError: the JSON object must be str, not 'bytes'

json.load場合、 .read()付いたオブジェクト(この場合はHTTPResponseオブジェクト)を渡す必要がありますが、 HTTPResponseオブジェクトでは動作しません。

私はこれを次のどこに行かなければいけないのか分からないが、私の1500行のスクリプト全体が新しくPython 3に変換されているので、2.7に戻った気がしない。


デコード()を使って同じ問題に直面していますが、

...
rawreply = connection.getresponse().read()
reply = json.loads(rawreply.decode())

私も問題に出会った。

import json
import urllib.request as ur
import urllib.parse as par

html = ur.urlopen(url).read()
print(type(html))
data = json.loads(html.decode('utf-8'))




nexmo