java对象转成byte[]有没一个通用的方法啊
你可以先转成string然后转成Byte
要通过数组字节流转换
//创建一个字节数组输出流
ByteArrayOutputStream bos = new ByteArrayOutputStream();
//把对象输出到字节数组中
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(msg);
oos.flush();
//把要发送的数据转换为字节数组
byte b[]=bos.toByteArray();
借助fastjson工具包实现
JSON.toJsonString(对象名).getBytes()
hutool 工具类
对象里加个toString方法,然后在.getBytes();
给你提供一个简单工具类吧
/**
* 对象转byte
* @param obj
* @return
*/
private 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 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;
}
public static byte[] serializeParam(Object param) {
try (ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream objOutStream = new ObjectOutputStream(out)) {
objOutStream.writeObject(param);
return out.toByteArray();
} catch (IOException e) {
LOG.error("错误。", e);
return null;
}
}
public static <T> T deSerializeParam(byte[] b, Class<T> clazz) {
try (ByteArrayInputStream in = new ByteArrayInputStream(b);
ObjectInputStream objInStream = new ObjectInputStream(in)) {
return clazz.cast(objInStream.readObject().getClass());
} catch (IOException | ClassNotFoundException e) {
LOG.error("错误。", e);
return null;
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632