Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想将具有动态属性的对象保存为byte[]或Sqlite中的原始数据,并将其作为对象从Sqlite加载_Java_Android_Sqlite - Fatal编程技术网

Java 我想将具有动态属性的对象保存为byte[]或Sqlite中的原始数据,并将其作为对象从Sqlite加载

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

我不想使用任何ORM或领域,也不喜欢将数据转换为类似Json的格式

我的类现在很简单,但我想在将来扩展它

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不可序列化。