我使用的: Ubuntu14.04 , python3.5 , 在 virtualenv 环境下,运行一个 Flask 小程序:使用 itsdangerous 生成 token , 使用 Flask 的 jsonify 返回,出现了如下错误:
File "/usr/lib/python3.5/json/encoder.py", line 180, in default raise TypeError(repr(o) + " is not JSON serializable") TypeError: b'eyJhbGciOiJIUzI1NiIsImlhdCI6MTQ1ODU2NDQ3MywiZXhwIjoxNDU4NTY4MDczfQ.eyJ1aWQiOiI1NzEwMTk0MTI5In0.Z66p5rxbUqWT_pbdonK8Im6VXHLP_gEZPW71sWn0b-s' is not JSON serializable
代码大概如下:
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer def return_token(): utoken = gen_token() return jsonify({'access_token': utoken}), 200 def gen_token(): s = Serializer('sercret_key', expires_in=3600) return s.dumps({'uid': self.uid})
![]() | 1 knightdf 2016-03-21 20:59:50 +08:00 你跟我把字节打印出来看看。。。不就是二进制串么。。。 |
![]() | 2 JhOOOn OP @knightdf 上面的错误里,有打印出来的字节,以前用过(难道我记错了?),可以序列化的,换个电脑就不行了,不知道哪里又配置错了 |
3 billlee 2016-03-21 21:09:31 +08:00 JSON 里面没有二进制类型,要么把 bytes 解码成 unicode 字符串,要么编码成 base64 |
![]() | 4 wizardforcel 2016-03-21 21:34:13 +08:00 via Android @billlee 或者转成 int 数组。 |