Java中,对于对象可以通过序列化成byte数组或者序列化成json形式,这里做下两者的对比。
首先看下实现方式:
这里由两个方法,一个是对象序列化为字节数组,一个是字节数组序列化为对象,这里需要注意的是对象的serialVersionUID 必须设置为一样才能序列化,否则哪怕两个类长得一模一样都会报错。
private static byte[] ObjectToByte(Object obj) { byte[] bytes = null; try { // object to bytearray ByteArrayOutputStream bo = new ByteArrayOutputStream(); ObjectOutputStream oo = new ObjectOutputStream(bo); oo.writeObject(obj); bytes = bo.toByteArray(); bo.close(); oo.close(); } catch (Exception e) { System.out.println("translation" + e.getMessage()); e.printStackTrace(); } return bytes; } /** * byte转对象 * @param bytes * @return */ private static Object ByteToObject(byte[] bytes) { Object obj = null; try { // bytearray to object ByteArrayInputStream bi = new ByteArrayInputStream(bytes); ObjectInputStream oi = new ObjectInputStream(bi); obj = oi.readObject(); bi.close(); oi.close(); } catch (Exception e) { System.out.println("translation" + e.getMessage()); e.printStackTrace(); } return obj; }这里选择了fastJson来序列化对象,实现方式如下:
public static <T> T get(String data, Class<T> clazz) { T body = JSON.parseObject(data, clazz); return body; } public static String toJson(Object o) { return JSONObject.toJSONString(o); }fastJson实现方法比较简单。
下面对性能进行了对比:
类别1000次5000次10000次100000次1000000次byte数组82ms147ms213ms827ms5707msfastJson114ms157ms146ms174ms412ms此数据来自i7 16g内存windows eclipse软件测试得来。
可以看出来在大规模数据的情况下fastJson还是非常快的。
