2013-11-18 4 views
0

Я пытаюсь получить blob из моего mysql, но используя json. Вот мой код:Как получить изображение из mysql с помощью json?

public class ClubVO { 
    private long _id; 
    private String nom = null; 
    private byte[] imageClub = null; 
    public long getId() { 
     return _id; 
    } 
    public void setId(long aId) { 
     this._id = aId; 
    } 
    public String getNom() { 
     return nom; 
    } 
    public void setNom(String aNom) { 
     this.nom = aNom; 
    } 
    public byte[] getImage() { 
     return imageClub; 
    } 
    public void setImage(byte[] aImage) { 
     this.imageClub = aImage; 
    } 
} 

Здесь функция я использую, чтобы получить мой JSon объект:

public List<ClubVO> consultPlacesByName() throws Exception { 
    String[] resposta = new WebServiceClient().get(URL_WS); 

    if (resposta[0].equals("200")) { 
     Gson gson = new Gson(); 
     ArrayList<ClubVO> lListaPlaces = new ArrayList<ClubVO>(); 
     JsonParser parser = new JsonParser(); 
     JsonArray lJasonArray = parser.parse(resposta[1]).getAsJsonArray(); 
     for (int i = 0; i < lJasonArray.size(); i++) 
      lListaPlaces.add(gson.fromJson(lJasonArray.get(i), ClubVO.class)); 
     return lListaPlaces; 
    } else { 
     throw new Exception(resposta[1]); 
    } 
} 

Вот что я получаю с этим кодом:

{"_id":15,"nom":"Musée d'art Contemporain de Montréal","imageClub":"[[email protected]"} 

Только один больше, моя колонка - тип blob.

+0

вы не объяснить, почему именно то, что вы получаете с этим кодом не так. Вы имеете в виду, что 8 байтов не является ожидаемой длиной? – Mark

+0

Возможный дубликат [Двоичные данные в строке JSON. Что-то лучше Base64] (http://stackoverflow.com/questions/1443158/binary-data-in-json-string-something-better-than-base64) –

+1

Вам нужно сериализовать изображение в байт [], затем закодировать байты в строку. –

ответ

0

Ваша проблема заключается в том, что вместо реального образа байты у вас есть хэш из массива байтов в данных JSON: «[B @ 25450aa2» Чтобы решить эту проблему, когда вы сериализовать объект, который нужно использовать

new String(Base64.encodeBase64(byteArray)) 

и когда вы анализировать данные JSON, что вам нужно сделать наоборот:

Base64.decodeBase64(jsonString.getBytes()) 
Смежные вопросы