在实习中分配到的一个任务:保存客户操作历史记录——须将用户操作设计到的实体对象存入数据库。
一开始想到的是Java Serializatoin来进行处理这一操作:将javabean序列化为字节数组,再存入数据库中。但是在实践的过程中发现,使用oracle存取byte[]实在是非常纠结的事情,将byte[]转化为String则会将对象破坏掉,无法转回。
最后采取的解决方案是引入了google的Gson包,Gson包提供了将对象转换为json字符串和转回的方法。实现了这个功能。
以下是我写的LogService中的调用gson的代码:
/**
* 对象转化为json字符串
* @param Object 对象
* @return String 转化所得字符串
*/
public String object2String(Object o){
try{
return GsonProducer.getGson().toJson(o);
}catch(Exception e){System.out.println(e.getMessage());}
return null;
}
/**
* json字符串转化为对象
* @param objectString 对象转化所得字符串
* @param className 对象的完整类名
* @return Object 对象
*/
public Object string2Object(String objectString,String className){
try {
return GsonProducer.getGson().fromJson(objectString, Class.forName(className));
} catch (JsonSyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}