Java中 byte[]数组序列化和fastjson序列化区别

xiaoxiao2021-02-28  36

Java中 byte[]数组序列化和fastjson序列化区别

Java中,对于对象可以通过序列化成byte数组或者序列化成json形式,这里做下两者的对比。

首先看下实现方式:

1 byte数组序列化

这里由两个方法,一个是对象序列化为字节数组,一个是字节数组序列化为对象,这里需要注意的是对象的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; }

2 fastjson序列化

这里选择了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还是非常快的。

转载请注明原文地址: https://www.6miu.com/read-2629011.html

最新回复(0)