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)
json传输二进制的方案(python版)相关推荐
- json传输二进制的方案【转】
本文转自:http://wiyi.org/binary-to-string.html json 是一种很简洁的协议,但可惜的是,它只能传递基本的数型(int,long,string等),但不能传递by ...
- python热度评价指标_文本相似性热度统计方案(python版)
1. 场景描述 背景不写了,只谈技术,做的是文本相似性统计,因需要从文本描述性信息中分析同类信息,以便后续重点关注,数据量比较大,大概20多万,人工效率低,需要算法来实现. 根据需求要从不同维度进行统 ...
- python之simplejson,Python版的简单、 快速、 可扩展 JSON 编码器/解码器
simplejson Python版的简单. 快速. 可扩展 JSON 编码器/解码器 编码基本的 Python 对象层次结构: import simplejson as jsonprint json ...
- Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
Python csv.xlsx.json.二进制(MP3) 文件读写基本使用 文章目录 Python csv.xlsx.json.二进制(MP3) 文件读写基本使用 前言 一.什么是文件读写? 二.文 ...
- 接口测试之主流协议测试合集(python版)
http://t.csdn.cn/U4WHz 接口测试之主流协议测试合集(python版) 01 TCP/IP四层模型&OSI七层模型 02 IP协议 03 TCP协议 04 UDP协议 05 ...
- 【python版】leanCloud的使用
[python版]leanCloud的使用 参考 数据存储方案 价格 Python SDK 安装指南 数据存储开发指南 · Python 文章目录 [python版]leanCloud的使用 通过凭证 ...
- 发明者本地回测平台python版[博]
原创博客地址:发明者本地回测平台python版[博] 网页版策略开发问题 1,没有自动提示 2,tab自动4个空格,问题是编译器无法识别4个空格,只能再把自动填充4空格改成tab 另一方面,官方提供安 ...
- 部署Kubernetes集群(二进制 v1.18.8版)
第一章 kubernetes 功能介绍 · kubernetes 从入门到实践 · 看云 二进制 部署Kubernetes集群 组件版本 组件 版本 二进制包下载地址 备注 centos 7.8.20 ...
- 算法(Python版)|156Kstars|神级项目-(1)The Algorithms - Python简介
文章目录 算法(Python版) 项目地址 项目概况 说明 参与入门 社区频道 算法列表 Arithmetic Analysis 算术分析 Audio Filters 音频过滤器 Backtracki ...
最新文章
- 指向字符串的指针为何不能用来修改此字符串
- SmartQuery WebPart 2.0 发布。
- 20210625 函数的极限
- 关于runjs的一些想法
- java 二进制 归属权限_java 二进制 权限管理
- 406. 根据身高重建队列
- js var是什么类型_面试官问你JS基本类型时他想知道什么?
- 【板栗糖GIS】kmz数据是什么,如何打开,普通数据如何转换成kmz格式
- 如何优化深度学习模型
- 直流电机正反转驱动电路
- 微软升级网页版Skype 没有帐户也能拨打网络电话
- windows磁盘分区合并(比如合并到C盘/分区扩容)问题/删除恢复分区
- 关于系统迁移到固态硬盘后,新系统引导项丢失的问题
- CommandLineRunner接口介绍
- linux ksh 用户名,学习Linux中ksh的用法
- Spring Cloud + Mybatis 多数据源配置
- 哈佛商业评论:关于区块链的真相
- Vue 源码解读 起步(二)
- Microsoft Offfice 2010 测试版下载
- 使用Umi SSR 报错 Warning: Did not expect server HTML to contain a <div> in <div>.