我正在做上传图片的项目,因为我将图像转换为base64字符串,现在在我的DTO中,我按字节顺序对字节数组进行了反序列化:
class DecodePhoto extends JsonDeserializer<byte[]> {
@Override
public byte[] deserialize(JsonParser jsonparser, DeserializationContext arg1)
throws IOException, JsonProcessingException {
String data = jsonparser.getText();
try {
byte[] decodedBytes = org.apache.commons.codec.binary.Base64.decodeBase64(data);
return decodedBytes;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
在图像中调用ajax后,我收到如下错误:
java.lang.NoSuchMethodError:org.apache.commons.codec.binary.Base64.decodeBase64(Ljava / lang / String;)
这是什么问题?我附上了jar common-codec-1.9.jar 和 jackson-databind-2.3.2.jar
但在调试模式(类文件编辑器)中,它显示如下
JAR文件jackson-databind-2.3.2.jar没有源附件。
请帮我反序列化字节数组?
答案 0 :(得分:0)
我使用.decodeBase64(byte[])
代替.decodeBase64(String)
解码字节数组。
原因:因为方法.decodeBase64(final String base64String)
用于common-codec-1.4
版本,但我使用的是common-codec-1.9
版本,因此我使用了.decodeBase64(byte[])
。< / p>
class DecodePhoto extends JsonDeserializer<byte[]> {
@Override
public byte[] deserialize(JsonParser jsonparser, DeserializationContext arg1)
throws IOException, JsonProcessingException {
String data = jsonparser.getText();
try {
byte[] decodedBytes = org.apache.commons.codec.binary.Base64.decodeBase64(**data.getBytes()**); // here is the major change
return decodedBytes;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}