json传输二进制

由于JSON不支持直接传输byte类型数据,本文提出了通过Base64编码进行转换的方法。在发送方将二进制数据Base64编码成字符串,然后在接收方接收到JSON数据后进行Base64解码,恢复原始的二进制内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原因

json不能传递byte类型

方案 通过base64加码解码

加码:

    #读取二进制序列
    data = img.read()
    bast64_data = base64.b64encode(data)
    #字符串化,使用utf-8的方式解析二进制
    bast64_str = str(bast64_e,'utf-8')

解码

bast64_data = bast64_str.encode(encoding='utf-8')
data = base64.b64decode(bast64_data)
### 如何通过JSON传递二进制数据 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,主要用于表示结构化数据。然而,由于其设计初衷并非用于传输二进制数据,因此直接嵌入二进制内容会遇到挑战。为了有效处理这一需求,通常采用两种主要方法: #### 方法一:Base64编码 一种常见做法是将二进制数据转换成Base64字符串再放入JSON对象中。这种方式可以确保任何类型的文件都能被安全地序列化到文本形式。 ```json { "binaryData": "SGVsbG8gd29ybGQh" } ``` 上述例子展示了如何把简单的ASCII字符"Hello world!"转化为Base64编码后的字符串并存储于名为`binaryData`的键下[^1]。 对于实际应用中的大尺寸图片或其他多媒体资源,则需先读取这些文件的内容作为字节数组,之后调用相应的库函数完成Base64编码过程。以下是Python环境下实现此功能的一个简单实例: ```python import base64 def encode_file_to_base64(file_path): with open(file_path, 'rb') as file: encoded_string = base64.b64encode(file.read()).decode('utf-8') return {"binaryContent": encoded_string} print(encode_file_to_base64('./example_image.png')) ``` 这种方法虽然增加了约33%的数据体积,但在大多数情况下是可以接受的成本增加方式来换取跨平台兼容性和易于解析的优点。 #### 方法二:使用自定义协议或扩展属性 另一种方案是在发送方和接收方之间约定好特定字段用来指示后续跟随的是原始二进制流而非标准UTF-8编码的文字串。不过这要求双方都支持这种非标准化的方式,并且可能涉及到更复杂的编程逻辑去正确识别边界条件等问题。 考虑到通用性和易用性的因素,推荐优先考虑基于Base64的方法来进行JSON内的二进制数据传输操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值