Java 我想将具有动态属性的对象保存为byte[]或Sqlite中的原始数据,并将其作为对象从Sqlite加载
我不想使用任何ORM或领域,也不喜欢将数据转换为类似Json的格式 我的类现在很简单,但我想在将来扩展它Java 我想将具有动态属性的对象保存为byte[]或Sqlite中的原始数据,并将其作为对象从Sqlite加载,java,android,sqlite,Java,Android,Sqlite,我不想使用任何ORM或领域,也不喜欢将数据转换为类似Json的格式 我的类现在很简单,但我想在将来扩展它 public class Request implements Serializable { public int Id; public int Type; public int MTI; public String amount; } 最后我找到了解决办法。首先,使用requestClassToRawData()方法将对象转换为原始数据,然后将其保存到Sq
public class Request implements Serializable {
public int Id;
public int Type;
public int MTI;
public String amount;
}
最后我找到了解决办法。首先,使用requestClassToRawData()方法将对象转换为原始数据,然后将其保存到Sqlite
publicstaticbyte[]requestClassToRawData(请求){
试一试{
ByteArrayOutputStream outputStream=新建ByteArrayOutputStream();
ObjectOutputStream oos=新的ObjectOutputStream(outputStream);
oos.writeObject(请求);
返回outputStream.toByteArray();
}捕获(IOE异常){
e、 printStackTrace();
}
返回null;
}
然后,您可以稍后使用rawDataTORequestClass()方法将其转换回您的对象
公共静态请求rawDataTORequestClass(字节[]数据){
试一试{
ByteArrayInputStream inputStream=新的ByteArrayInputStream(数据);
ObjectInputStream ois=新ObjectInputStream(inputStream);
返回(请求)ois.readObject();
}捕获(IOE异常){
e、 printStackTrace();
}catch(classnotfounde异常){
e、 printStackTrace();
}
返回null;
}
这将比JSON占用更多的空间,速度较慢,将来升级会有困难,并且您将无法手动调试数据。我想选择此选项用于在数据库中保存日志。这不起作用,因为POJO不可序列化。