json传输二进制的方案(python版)
生活随笔
收集整理的這篇文章主要介紹了
json传输二进制的方案(python版)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
json傳輸二進制的方案(python版)
1.json不能直接傳二進制文件
json只能傳遞基本的數型(如:int,long,string等),但不能傳遞byte類型。但是有時候我們想在json中傳送一些二進制文件,如:圖片等,是沒辦法直接傳輸。
再給出解決方案前補充一下編碼和解碼的知識:
- 編碼:將信息從一種形式或格式轉換為另一種形式的過程,如:(生活中的字符串轉計算機的存儲字節,一種不可字符化的字節轉另一用可字符化的字節)
- 解碼:編碼的逆向形式。
2.思路
- 我們要通過一些辦法將二進制文件轉成字符串供給json傳輸,然后在服務端再將字符串轉為二進制文件。
- 但是二進制文件無法直接轉化為可打印的字符串(因為編碼方式不允許),這時我們需要對二進制文件做一個轉化,將文件的二進制序列轉化為一種能被轉為字符串的二進制序列,然后再轉化為字符串。
- 文件(不可直接轉字符串)----->編碼后的二進制序列(可字符串化)----->字符串----->json傳輸
思路步驟如下:
3.base64
base64有以下這些作用
a)所有的二進制文件,都可以因此轉化為可打印的文本編碼,使用文本軟件進行編輯;
b)能夠對文本進行簡單的加密。
操作步驟如下:
base64編碼
with open(imgname, 'rb') as img:#讀取二進制序列data = img.read()#b64編碼,生成新的可字符化的二進制序列bast64_data = base64.b64encode(data)#字符串化,使用utf-8的方式解析二進制bast64_str = str(bast64_e,'utf-8')#json傳遞......base64解碼
#將字符串重新編碼為utf-8的二進制序列(該序列被b64編碼過) bast64_data = bast64_str.encode(encoding='utf-8') #b64解碼,獲得原二進制序列 data = base64.b64decode(bast64_data)總結
以上是生活随笔為你收集整理的json传输二进制的方案(python版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何修改无线路由器的密码天翼宽带无线路由
- 下一篇: 将pdg转为pdf的软件与图文方法分享