在spring java中反序列化字节数组的方法

时间:2014-11-18 15:22:25

标签: spring bytearray deserialization image-uploading json-deserialization

我正在做上传图片的项目,因为我将图像转换为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没有源附件。

请帮我反序列化字节数组?

1 个答案:

答案 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);
        }
    }
}