文字列の配列リストをローカル データベースの 1 列に保存する必要がありました。これを行うにはいくつかの問題があります。誰かが私が間違っているところを教えてもらえますか...
private String serializeArray(List<String> array) {
try {
ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bytesOut);
oos.writeObject(array);
oos.flush();
oos.close();
return Base64.encodeToString(bytesOut.toByteArray(), Base64.NO_WRAP);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
private ArrayList<String> deserializeArray(String string) {
Log.d("USERDAO", string);
try {
ByteArrayInputStream bytesIn = new ByteArrayInputStream(Base64.decode(string, Base64.NO_WRAP));
ObjectInputStream ois = new ObjectInputStream(bytesIn);
return (ArrayList<String>) ois.readObject();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
逆シリアル化配列で Arraylist を返すときに、null ポインター例外が発生します。serialiseArray メソッドは文字列を返しますが、それが正しいかどうかはわかりません。