Android Java десериализовать int [] [] - PullRequest
0 голосов
/ 01 марта 2012

я использую следующий метод для сериализации int [] [] для хранения в БД.Я не могу вернуть данные в формате массива, второй метод был моей первой попыткой вернуть мои данные.Может быть, мне не хватает некоторых основ?

public byte[] serializeFarbwerte(int[][] farbwerte){
    byte [] frame = null;
    // Serialize colorvalues to a byte array
    ObjectOutputStream out;
    ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
    try {
        out = new ObjectOutputStream(bos) ;
        out.writeObject(farbwerte);
        out.close();
        frame = bos.toByteArray();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    return frame;
}
enter code here

Как мне вернуть данные в правильном формате?Я попробовал это, но, наконец, мой массив все еще отсутствует;)

public int[][] unserializeFarbwerte(byte[] frame){
    int [][]farbwerte = null;
    byte[] outbyte =null;
    // deserialize byte array to table color values
    ObjectInputStream in;
    ByteArrayInputStream bis = new ByteArrayInputStream(frame) ;

    try {
        in = new ObjectInputStream(bis) ;
        in.readObject();    
        in.close();
        bis.read(outbyte);
    } catch (StreamCorruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //for testing
    for(int x = 0; x<8;x++){
        for(int y = 0; x<16;y++){
            farbwerte[x][y] = outbyte[x+y];
        }
    }
    return farbwerte;
}

Заранее спасибо за помощь!

// Редактировать: Просто если кто-то найдетэто полезно: я реализовал решение @Javes следующим образом:

   public int[][] unserializeFarbwerte(byte[] frame){

    int[][]farbwerte = null;
    // deserialize byte array to table color values
    ObjectInputStream in;
    ByteArrayInputStream bis = new ByteArrayInputStream(frame);
    try {
        in = new ObjectInputStream(bis) ;
        farbwerte = (int[][]) in.readObject();  
        in.close();
    } catch (StreamCorruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return farbwerte;
}
...