您好,欢迎来到六九路网。
搜索
您的当前位置:首页Java对象和字节数组互相转换

Java对象和字节数组互相转换

来源:六九路网
Java对象和字节数组互相转换

  应⽤场景:redis⽤String存储对象数据  

1 public class ObjToByteUtil { 2

3 /**

4 * 对象转Byte数组 5 * @param obj 6 * @return 7 */

8 public static byte[] objToByteArray(Object obj) { 9 byte[] bytes = null;

10 ByteArrayOutputStream byteArrayOutputStream = null; 11 ObjectOutputStream objectOutputStream = null; 12 try {

13 byteArrayOutputStream = new ByteArrayOutputStream();

14 objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); 15 objectOutputStream.writeObject(obj); 16 objectOutputStream.flush();

17 bytes = byteArrayOutputStream.toByteArray(); 18 } catch (IOException e) {

19 System.err.println(\"objectToByteArray failed, \" + e); 20 } finally {

21 if (objectOutputStream != null) { 22 try {

23 objectOutputStream.close(); 24 } catch (IOException e) {

25 System.err.println(\"close objectOutputStream failed, \" + e); 26 } 27 }

28 if (byteArrayOutputStream != null) { 29 try {

30 byteArrayOutputStream.close(); 31 } catch (IOException e) {

32 System.err.println(\"close byteArrayOutputStream failed, \" + e); 33 } 34 } 35 }

36 return bytes; 37 } 38

39 /**

40 * Byte数组转对象 41 * @param bytes 42 * @return 43 */

44 public static Object byteArrayToObj(byte[] bytes) { 45 Object obj = null;

46 ByteArrayInputStream byteArrayInputStream = null; 47 ObjectInputStream objectInputStream = null; 48 try {

49 byteArrayInputStream = new ByteArrayInputStream(bytes);

50 objectInputStream = new ObjectInputStream(byteArrayInputStream); 51 obj = objectInputStream.readObject(); 52 } catch (Exception e) {

53 System.err.println(\"byteArrayToObject failed, \" + e); } finally {

55 if (byteArrayInputStream != null) { 56 try {

57 byteArrayInputStream.close(); 58 } catch (IOException e) {

59 System.err.println(\"close byteArrayInputStream failed, \" + e); 60 } 61 }

62 if (objectInputStream != null) { 63 try {

objectInputStream.close(); 65 } catch (IOException e) {

66 System.err.println(\"close objectInputStream failed, \" + e); 67 } 68 } 69 }

70 return obj; 71 } 72

73 public static Map toByteMap(Map map) { 74 Map result = new LinkedHashMap(); 75 for (Map.Entry entry : map.entrySet()) {

76 result.put(StringSerializer.toByteArray(entry.getKey()), objToByteArray(entry.getValue()));

77 }

78 return result; 79 } 80

81 public static Map fromByteMap(Map map) { 82 Map result = new LinkedHashMap(); 83 for (Map.Entry entry : map.entrySet()) {

84 result.put(StringSerializer.fromByteArray(entry.getKey()), byteArrayToObj(entry.getValue())); 85 }

86 return result; 87 } 88

public static void main(String[] args) { 90 User user = new User();

91 user.setAccount(\"zhangsan\"); 92 user.setName(\"张三\"); 93

94 byte[] obj2Byte = objToByteArray(user);

95 System.out.println(\"obj2Byte : \" + obj2Byte); 96

97 Object obj = byteArrayToObj(obj2Byte); 98 System.out.println(\"obj : \" + obj.toString()); 99 User u = (User) obj;

100 System.out.println(\"u.account : \" + u.getAccount() + \" u.name : \" + u.getName());101 }102 103 }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务