【背景】
公司引入了明道云,于是开始利用明道云与自己的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)
打印出正确的值,成功!