【Flask】将API传来的Bytes数据流转换为Python后台可使用的字典

【背景】
公司引入了明道云,于是开始利用明道云与自己的Flask项目做整合,其中就要用到API传值。传到Python后台后,Print发现是bytes形式:

b'{"641862be95040f887872d633":"NewMap147","641862be95040f887872d634":"{\\"root\\":{\\"data\\":{\\"id\\":\\"cq6u78fdiqw0\\",\\"created\\":1675215125479,\\"text\\":\\"\xe4\xb8\xad\xe5\xbf\x83\xe4\xb8\xbb\xe9\xa2\x98\\"},\\"children\\":[]},\\"template\\":\\"default\\",\\"theme\\":\\"fresh-blue\\",\\"version\\":\\"1.4.33\\"}","ownerid":"ecce88f9-398d-4b87-bb38-f12313772341","caid":"ecce88f9-398d-4b87-bb38-f12313772341","uaid":"ecce88f9-398d-4b87-bb38-f12313772341","ctime":"2023-03-24 21:45","utime":"2023-03-24 21:45","rowid":"f8b3726f-c358-4fa7-8150-518c3f61b2cc","wfname":"","wfcuaids":"","wfcaid":"","wfctime":"","wfrtime":"","wfdtime":"","wfstatus":"","wsid":"641862be95040f887872d632","pid":"ce205820-a9c3-4ced-a623-25d1e9f16a6d"}'

【问题】

发现无法用一般Flask获取URL参数的方法去获取这样的Bytes流。

【解决】

字节流可以用如下方法获得:

data = request.get_data()

拿到的字节流需要先解码转为字符串形式。

data.decode('UTF-8')

再把字符串用eval方法转换为字典:

data_str = eval(data.decode('UTF-8'))

最终转换成的data_str就是可以继续使用的字典啦。

【验证】

用字典的方法取值:

name = data_str['641862be95040f887872d633']
print(name)

打印出正确的值,成功!

猜你喜欢

转载自blog.csdn.net/weixin_41697242/article/details/129793490
今日推荐