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

Android图片转Base64写入JSON后转义异常,无法解码求助

解决Base64图片编码写入JSON后无法解码的问题

我来帮你搞定这个问题!你遇到的两个现象——/被转义成\/、出现\n换行,其实都是有原因的,咱们一步步解决:

问题根源拆解

  1. 换行符\n的由来:你用了Base64.DEFAULT编码模式,这个模式会自动在每76个字符后添加换行符,目的是让长字符串更易读,但这些换行符写入JSON后就变成了\n,直接破坏了Base64的结构,导致解码失败。
  2. /被转义成\/:这其实是JSON的正常语法规则,JSON会对部分特殊字符做转义处理。你直接从JSON文本里复制字符串解码肯定会失败,但如果用JSON解析库读取这个字段,解析器会自动把\/还原成/,完全不影响使用。

具体解决方案

第一步:替换Base64编码模式

把编码时的Base64.DEFAULT改成Base64.NO_WRAP,这个模式不会添加任何换行符,生成的是纯净的连续Base64字符串。

修改你的代码:

// 原代码
// imageString2 = Base64.encodeToString(imageBytes2, Base64.DEFAULT);
// 修改后
imageString2 = Base64.encodeToString(imageBytes2, Base64.NO_WRAP);

同样的,imageString1的编码也要做相同修改哦。

第二步:正确读取JSON中的Base64字符串

当你需要从JSON里提取Base64字符串解码时,一定要用JSON解析工具(比如你代码里的JSONObject)来获取字段值,而不是直接复制JSON文本里的内容。举个例子:

// 假设你拿到了返回的response JSONObject
String base64Str = response.getString("im1");
// 这里得到的base64Str已经自动处理了转义,直接解码即可
byte[] imageBytes = Base64.decode(base64Str, Base64.NO_WRAP);
Bitmap bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);

这样处理后,生成的Base64字符串写入JSON后,既能避免换行符干扰,转义的\/也会被解析器自动还原,就能正常解码出图片啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:38:39