使用Jackson(或Spring)解码Base64

Enr*_*man 5 rest base64 spring-mvc jackson

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

我发现了这个(标准Java),我也发现了一个内部Spring类(坏主意).

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

我也使用Spring MVC 3,因此可以从Spring框架中获得一个类来执行此操作.

[拜托,没有Apache Commons.我想找到一个没有添加更多东西的解决方案]

Sta*_*Man 14

使用byte[]财产和Base64编码/解码"只是工程".没什么可做的.

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

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

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


Dav*_*idR 7

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

byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
String decodedString = new String(decodedBytes);
Run Code Online (Sandbox Code Playgroud)