Джексон 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, чтобы удалить его в зашифрованной строке.