You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python字符串二进制表示转为JSON?解析报错解决方法

解决Python含二进制数据的字典转JSON及前端解析问题

问题根源

你遇到的两个错误本质是Python语法和JSON语法不兼容:

  1. JSON不支持Python的b''二进制字面量语法,所以解析时会报错"Unexpected token 'b'"
  2. JSON要求所有属性名必须用双引号,而你的原字符串用的是单引号,触发"Expected double-quoted property name"错误

另外,JSON本身不支持二进制数据类型,必须先把二进制转成字符串格式才能嵌入JSON。

解决步骤

1. 在Python端生成合法JSON

需要把二进制数据编码成base64字符串(通用的二进制转字符串方案),再用json.dumps()生成符合JSON规范的字符串:

import json
import base64

# 原Python字典
raw_data = {'file_reference': b'\x04~\x9eaR\x00\x00\x00\x05e\xeb;~6t\x035\x95=\xf4D\xb4\xfc\xb4\x95>\x03\x10\xd4'}

# 将二进制数据转成base64编码的字符串
raw_data['file_reference'] = base64.b64encode(raw_data['file_reference']).decode('utf-8')

# 生成合法JSON字符串
valid_json = json.dumps(raw_data)
print(valid_json)

执行后会输出类似这样的合法JSON:

{"file_reference": "BH+pemJSAAAAAWXrO342dDA1WT099E20/LSlTgwxDNQ="}

2. 前端解析JSON

拿到上面的valid_json字符串后,直接用JSON.parse()就能正常解析:

const jsonStr = '{"file_reference": "BH+pemJSAAAAAWXrO342dDA1WT099E20/LSlTgwxDNQ="}';
const data = JSON.parse(jsonStr);

// 如果需要还原二进制数据,前端可以这样处理
const binaryStr = atob(data.file_reference);
const uint8Array = new Uint8Array(binaryStr.length);
for (let i = 0; i < binaryStr.length; i++) {
  uint8Array[i] = binaryStr.charCodeAt(i);
}
// uint8Array就是还原后的二进制数据

关键注意点

  • 永远不要直接把Python的字典字符串(比如用str()或repr()生成的)传给前端解析,因为那是Python语法,不是标准JSON
  • 二进制数据必须转成字符串格式(base64是最常用的选择)才能存入JSON

内容的提问来源于stack exchange,提问作者majar anar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 12:24:51