Джексон ObjectMapper добавляет недопустимый символ в поле строки base64 img на writeValueAsString

Я пытаюсь отправить объект с изображением, преобразованным в base64 строка, но когда я преобразую это object к json строка для отправки, несколько "\n" символы добавляются в эту строку, что делает его недействительным, когда он достигает сервера.

Преобразование растрового изображения в действительное base64 (Я проверил, если это действительно)

     ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
     base64Str =  Base64.encodeToString(outputStream.toByteArray(), 
     Base64.DEFAULT);

Создание запроса и настройка base64 Строка для отправки на резервную копию

     ObjectMapper mapper = new ObjectMapper();
     Request = new Request();
     payload.setData(base64);

на writeValueAsString "/n" добавляется в конце base64 значение, которое делает его недействительным

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

часть действительной базы 64 до преобразования в JSON

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

часть действительной базы 64 после преобразования в json (обратите внимание на включение '\n')

"Kz7cruI+8gLNZ\nRgnnKihQFDNt42sGaQlWMhVt2fLG9Q20NwpIx
/J0OWdOM4cso8tlZ3skldNWau0mmt7XT1P2/mcH\naWk15dFJrm+53Xndu7aP/9k=\n"

1 ответ

Обнаружил проблему, по умолчанию добавляется символ новой строки "\n" для encodeToString, чтобы добавить эффект переноса. Просто замените Base64.DEFAULT на Base64.NO_WRAP, чтобы удалить его в зашифрованной строке.

Другие вопросы по тегам