1

Я делаю проект, чтобы загрузить изображение, для этого я преобразованное изображения в base64 строку, теперь в моем DTO я десериализация массива байт следующим образом:способ десериализации массива байт в весеннем Java

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;)

В чем проблема? Я приложил банку общего кодек-1.9.jar и Джексона-DataBind-2.3.2.jar

Но в режиме отладки (Класс File Editor) он показывает, как следует

The JAR file jackson-databind-2.3.2.jar has no source attachment.

Незлых Помогите мне в десериализации массива байтов?

+0

[это] (http://stackoverflow.com/questions/25522309/converting-json-between-string-and-byte-with-gson/25523772#25523772) может помочь вам – user23123412

ответ

0

Я декодировал массив байтов, используя .decodeBase64(byte[]) вместо .decodeBase64(String).

Причина: Поскольку метод .decodeBase64(final String base64String) используется в common-codec-1.4 версии, но я использую common-codec-1.9 версию, поэтому я использовал .decodeBase64(byte[]).

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); 
     } 
    } 
} 
Смежные вопросы