8

这是我第一次尝试处理二进制数据,所以我对此很陌生。我正在编写一个用于上传内容的 REST 服务,并且我将收到一个 Base64 编码的字符串。

我找到了这个(标准 Java),并且我还找到了一个内部 Spring 类(坏主意)。

是否有杰克逊注释可以自动解码来自 Base64 的属性?我应该在我的对象中使用 String 还是 byte[]?

我也在使用 Spring MVC 3,因此可以使用 Spring 框架中的一个类来执行此操作。

[请不要使用 Apache Commons。我想在不添加更多内容的情况下找到解决方案]

4

3 回答 3

20

用于byte[]属性,Base64 编码/解码“正常工作”。没有额外的事情可做。

此外,杰克逊可以通过以下方式进行显式转换:

ObjectMapper mapper = new ObjectMapper();
byte[] encoded = mapper.convertValue("Some text", byte[].class);
String decoded = mapper.convertValue(encoded, String.class);

如果您想使用 Jackson 进行独立的 Base64 编码/解码。

于 2012-11-17T03:45:20.903 回答
8

对于使用 Java8 的用户,现在完全支持 Base64 编码/解码,不再需要第三方库。此外,它更简单(从三行减少到两行)并且更直接。

byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
String decodedString = new String(decodedBytes);
于 2015-12-17T00:34:50.297 回答
1

在 Spring 官方文档中有一个实用程序类,可以单行解决 base64 编码/解码问题。

byte[] bytes = Base64Utils.decodeFromString(b64String);
于 2017-03-28T16:04:12.233 回答