当前位置:  开发笔记 > 编程语言 > 正文

如何解析二进制字符串到dict?

如何解决《如何解析二进制字符串到dict?》经验,为你挑选了1个好方法。

我有 - flask服务.有时我可以jsonhttp标题处获得没有分数的消息.在这种情况下,我正在尝试解析来自的消息request.data.但是字符串来自request.data解析真的很难.这是一个二进制字符串,如下所示:

b'{\n    "begindate": "2016-11-22", \n    "enddate": "2016-11-22", \n    "guids": ["6593062E-9030-B2BC-E63A-25FBB4723ECC", \n              "5A9F8478-6673-428A-8E90-3AC4CD764543", \n              "D8243BA1-0847-48BE-9619-336CB3B3C70C"]\n}'

当我尝试使用时json.loads(),我收到此错误:

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

转换为string(str())的功能也不能很好地工作:

'b\'{\\n    "begindate": "2016-11-22", \\n    "enddate": "2016-11-22", \\n    "guids": ["6593062E-9030-B2BC-E63A-25FBB4723ECC", \\n              "5A9F8478-6673-428A-8E90-3AC4CD764543", \\n              "D8243BA1-0847-48BE-9619-336CB3B3C70C"]\\n}\''

我用Python 3.我该怎么办才能解析request.data



1> Jim Fasaraki..:

只是decode在传递给它之前json.loads:

b = b'{\n    "begindate": "2016-11-22", \n    "enddate": "2016-11-22", \n    "guids": ["6593062E-9030-B2BC-E63A-25FBB4723ECC", \n              "5A9F8478-6673-428A-8E90-3AC4CD764543", \n              "D8243BA1-0847-48BE-9619-336CB3B3C70C"]\n}'
r = json.loads(b.decode())
print(r)
{'begindate': '2016-11-22',
 'enddate': '2016-11-22',
 'guids': ['6593062E-9030-B2BC-E63A-25FBB4723ECC',
  '5A9F8478-6673-428A-8E90-3AC4CD764543',
  'D8243BA1-0847-48BE-9619-336CB3B3C70C']}

Python 3.x明确区分了类型:

str= '...'literals =一系列Unicode字符(UTF-16或UTF-32,具体取决于Python的编译方式)

bytes= b'...'literals =一个八位字节序列(0到255之间的整数)

链接了解更多信息

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有