【Flask】將API傳來(lái)的Bytes數(shù)據(jù)流轉(zhuǎn)換為Python后臺(tái)可使用的字典
【背景】
公司引入了明道云,于是開始利用明道云與自己的Flask項(xiàng)目做整合,其中就要用到API傳值。傳到Python后臺(tái)后,Print發(fā)現(xiàn)是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"}'
【問題】
發(fā)現(xiàn)無(wú)法用一般Flask獲取URL參數(shù)的方法去獲取這樣的Bytes流。
【解決】
字節(jié)流可以用如下方法獲得:
data = request.get_data()
拿到的字節(jié)流需要先解碼轉(zhuǎn)為字符串形式。
data.decode('UTF-8')
再把字符串用eval方法轉(zhuǎn)換為字典:
data_str = eval(data.decode('UTF-8'))
最終轉(zhuǎn)換成的data_str就是可以繼續(xù)使用的字典啦。
【驗(yàn)證】
用字典的方法取值:
name = data_str['641862be95040f887872d633']print(name)
打印出正確的值,成功!