杰克逊ObjectMapper在writeValueAsString上的base64 img字符串字段中添加了非法字符

时间:2018-10-05 11:55:23

标签: android base64 jackson2

我正在尝试发送图像转换为base64字符串的对象,但是当我将object转换为json字符串以发送它时,多个{{1} }字符添加到该字符串中,使其在到达服务器时无效。

将位图转换为有效的"\n"(我检查了其是否有效)

base64

创建请求并设置 ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream); base64Str = Base64.encodeToString(outputStream.toByteArray(), Base64.DEFAULT); 字符串以发送给支持的人

base64

在writeValueAsString上,在 ObjectMapper mapper = new ObjectMapper(); Request = new Request(); payload.setData(base64); 值的末尾添加了一个"/n",这使其无效

base64

有效基数64的一部分,然后转换为json

      String reqBody = "";
      try {
          reqBody = mapper.writeValueAsString(payload);
      } 
      catch (Exception ex) {
            }

转换为json后有效基数64的一部分(请注意包含“ \ n”)

"Kz7cruI+8gLNZRgnnKihQFDNt42sGaQlWMhVt2fLG9Q20NwpIx/
J0OWdOM4cso8tlZ3skldNWau0mmt7XT1P2/mcH
aWk15dFJrm+53Xndu7aP/9k="

1 个答案:

答案 0 :(得分:0)

发现了问题,默认情况下,将新行字符“ \ n”添加到encodeToString上,以添加环绕效果。只需将Base64.DEFAULT替换为Base64.NO_WRAP即可将其从编码字符串中删除。