2016-09-07 26 views
0

は私が(アナコンダ分布で)最新のpython3を実行し、標準ライブラリに問題があるよのsimplejsonないトレースバックの原因となるJSONをインストール:、のpython3、JSONはTypeError例外を引き起こすが、

Traceback (most recent call last): 
     File "C:\Users\Think\Anaconda3\lib\site-packages\werkzeug\serving.py", line 193, in run_wsgi 
     execute(self.server.app) 
     File "C:\Users\Think\Anaconda3\lib\site-packages\werkzeug\serving.py", line 181, in execute 
     application_iter = app(environ, start_response) 
     File "C:\Users\Think\my_server.py", line 148, in __call__ 
     return self.wsgi_app(environ, start_response) 
     File "C:\Users\Think\my_server.py", line 144, in wsgi_app 
     response = self.dispatch_request(request) 
     File "C:\Users\Think\my_server.py", line 80, in dispatch_request 
     return getattr(self, 'on_' + endpoint)(request, **values) 
     File "C:\Users\Think\my_server.py", line 54, in on_xapi_request 
     json_data = self.load_json(request.data) 
     File "C:\Users\Think\my_server.py", line 60, in load_json 
     return json.loads(data) 
     File "C:\Users\Think\Anaconda3\lib\json\__init__.py", line 312, in loads 
     s.__class__.__name__)) 

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

しかし、 simplejsonはエラーを発生させません。

+0

あなたは声明を出すだけです。これはQ&Aサイトです。あなたの投稿に疑問文を入れるのに役立ちます。その質問が何であるかを推測する必要はありません。 – Anthon

+0

+トレースバックだけでなく、いくつかのコードを与える必要があります。 – Morishiri

答えて

1

使用str.decode('utf-8')json.loads

に渡す前に、私はこの行を考える:

return json.loads(data) 

が問題を引き起こしています。この関数に渡す前にデータをデコードします。

+0

'return json.loads(data.decode(" utf-8 "))を使うだけで、より簡潔になります。 – Dartmouth

+0

それはそれをしました。どうもありがとう。シンプルジョーソンが働き、ジョーソンがしなかったのは変です。私はそれがpython3はstrとバイトについては厳密であるが、simplejsonはそうではないためだと推測している。 –

関連する問題