json传输二进制的方案(python版)

json传输二进制的方案(python版)

1.json不能直接传二进制文件

json只能传递基本的数型(如:int,long,string等),但不能传递byte类型。但是有时候我们想在json中传送一些二进制文件,如:图片等,是没办法直接传输。

再给出解决方案前补充一下编码和解码的知识:

  • 编码:将信息从一种形式或格式转换为另一种形式的过程,如:(生活中的字符串转计算机的存储字节,一种不可字符化的字节转另一用可字符化的字节)
  • 解码:编码的逆向形式。

2.思路

  • 我们要通过一些办法将二进制文件转成字符串供给json传输,然后在服务端再将字符串转为二进制文件。
  • 但是二进制文件无法直接转化为可打印的字符串(因为编码方式不允许),这时我们需要对二进制文件做一个转化,将文件的二进制序列转化为一种能被转为字符串的二进制序列,然后再转化为字符串。
  • 文件(不可直接转字符串)----->编码后的二进制序列(可字符串化)----->字符串----->json传输

思路步骤如下:

  1. 读取二进制文件(A)
  2. 使用base64编码文件的二进制序列(A),编码后的二进制序列(B)转化为可打印的文本编码
  3. 将编码后的二进制序列(B)转化为字符串
  4. 使用json传输经过转换后的字符串
  5. 在服务端将字符串重新转化为二进制序列(B)
  6. 然后再通过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)
posted @   鸭梨的药丸哥  阅读(112)  评论(0编辑  收藏  举报  
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示