【问题标题】:json.loads and Redis in python 3.5python 3.5 中的 json.loads 和 Redis
【发布时间】:2017-04-21 17:24:42
【问题描述】:

我用 json.dumps() 和 RPUSH(ed) 在 redis 列表中创建了一个 JSON 对象。 当使用 LRANGE ( redis.lrange() ) 取回 JSON 时,我收到一个二进制字符串

 b'{"si":"00:ff" ...

所以 json.loads() 引发错误: *** TypeError:JSON 对象必须是 str,而不是 'bytes' 我应该如何恢复到 ascii ?

【问题讨论】:

  • 之前的文件怎么样?你也试过 json.load() intead 吗?
  • 它也会引发错误:*** AttributeError: 'bytes' object has no attribute 'read'
  • 我也有同样的问题,但是在 Python3.6 中在本地是可以的,我的服务器使用 py3.5 并获取 TypeError: the JSON object must be str, not 'bytes' 如果你不想更新 py 只需使用 simplejson 替换内置json。但我不知道为什么……对不起。

标签: python json redis binascii


【解决方案1】:

一般来说,您要记住缩写词 BADTIE:

Bytes
Are
Decoded
Text
Is
Encoded

如果有字节,则运行 my_bytes.decode() 来获取文本。

如果您有文本,则运行 my_text.encode() 以获取字节。如果你知道编码,你也可以指定编码,但它有一个合理的默认值。

【讨论】:

    猜你喜欢
    • 2016-02-24
    • 2020-09-08
    • 1970-01-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 2013-01-26
    相关资源
    最近更新 更多