json传输二进制的方案(python版)
json传输二进制的方案(python版)
1.json不能直接传二进制文件
json只能传递基本的数型(如:int,long,string等),但不能传递byte类型。但是有时候我们想在json中传送一些二进制文件,如:图片等,是没办法直接传输。
再给出解决方案前补充一下编码和解码的知识:
- 编码:将信息从一种形式或格式转换为另一种形式的过程,如:(生活中的字符串转计算机的存储字节,一种不可字符化的字节转另一用可字符化的字节)
- 解码:编码的逆向形式。
2.思路
- 我们要通过一些办法将二进制文件转成字符串供给json传输,然后在服务端再将字符串转为二进制文件。
- 但是二进制文件无法直接转化为可打印的字符串(因为编码方式不允许),这时我们需要对二进制文件做一个转化,将文件的二进制序列转化为一种能被转为字符串的二进制序列,然后再转化为字符串。
- 文件(不可直接转字符串)----->编码后的二进制序列(可字符串化)----->字符串----->json传输
思路步骤如下:
- 读取二进制文件(A)
- 使用base64编码文件的二进制序列(A),编码后的二进制序列(B)转化为可打印的文本编码
- 将编码后的二进制序列(B)转化为字符串
- 使用json传输经过转换后的字符串
- 在服务端将字符串重新转化为二进制序列(B)
- 然后再通过base64解码成原二进制序列(A)
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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)