这是我第一次尝试处理二进制数据,所以我对此很陌生。 我正在写一个用于上传内容的REST服务,我将收到一个Base64编码的字符串。
我找到this(标准Java),我也发现了一个内部的Spring类(糟糕的主意)。
是否有Jackson注释可以自动解码Base64中的属性? 我应该在我的对象中使用String还是byte []?
我也在使用Spring MVC 3,所以可以从Spring框架中创建一个类来实现这一点。
[拜托,没有Apache Commons。我想找到一个没有添加更多东西的解决方案]
答案 0 :(得分:14)
使用byte[]
作为属性,Base64编码/解码“正常工作”。没什么可做的。
此外,杰克逊可以通过以下方式进行显式转换:
ObjectMapper mapper = new ObjectMapper();
byte[] encoded = mapper.convertValue("Some text", byte[].class);
String decoded = mapper.convertValue(encoded, String.class);
如果你想使用Jackson进行独立的Base64编码/解码。
答案 1 :(得分:7)
对于使用Java8的用户,现在完全支持Base64编码/解码,不再需要第三方库。而且它更简单(从三行减少到两行)并且更直接一点。
byte[] decodedBytes = Base64.getDecoder().decode(encodedString);
String decodedString = new String(decodedBytes);
答案 2 :(得分:0)
在官方Spring documentation中有一个实用程序类,其中包含对base64编码/解码问题的单行解决方案。
byte[] bytes = Base64Utils.decodeFromString(b64String);