JhOOOn
V2EX  ›  Flask

bytes 不能转化成 Json 序列吗

  •  
  •   JhOOOn · Mar 21, 2016 · 7507 views
    This topic created in 3742 days ago, the information mentioned may be changed or developed.

    我使用的: 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})
    
    
    Supplement 1  ·  Mar 21, 2016
    问题关闭
    8 replies    2017-12-14 21:32:21 +08:00
    knightdf
        1
    knightdf  
       Mar 21, 2016
    你跟我把字节打印出来看看。。。不就是二进制串么。。。
    JhOOOn
        2
    JhOOOn  
    OP
       Mar 21, 2016
    @knightdf 上面的错误里,有打印出来的字节,以前用过(难道我记错了?),可以序列化的,换个电脑就不行了,不知道哪里又配置错了
    billlee
        3
    billlee  
       Mar 21, 2016
    JSON 里面没有二进制类型,要么把 bytes 解码成 unicode 字符串,要么编码成 base64
    wizardforcel
        4
    wizardforcel  
       Mar 21, 2016 via Android
    @billlee 或者转成 int 数组。
    knightdf
        5
    knightdf  
       Mar 21, 2016
    @JhOOOn 什么叫打印出来的字节。。那只不过是按你默认编码转换过来的字符而已。。。
    JhOOOn
        6
    JhOOOn  
    OP
       Mar 21, 2016
    @billlee 使用 base64 encode 也是类 bytes 类型,不好使的,

    return base64.b64encode(s.dumps({'uid': self.uid}))

    我的 s.dumps()返回有问题,正常应该是一个 str ,为什么会是一个 bytes 呢?
    JhOOOn
        7
    JhOOOn  
    OP
       Mar 21, 2016
    @billlee 谢谢, decode 字符串就好了,理解错了,问题关了把。
    PanameraM
        8
    PanameraM  
       Dec 14, 2017
    @JhOOOn 你好 我也遇到了同样的问题。具体怎么改呀?能贴下改完后的代码吗?谢谢!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   949 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 18:59 · PVG 02:59 · LAX 11:59 · JFK 14:59
    ♥ Do have faith in what you're doing.