public class CommObject { public static String SerializeObjectToString(Object o){ String ret = null; //序列化使用的输出流 ObjectOutputStream OOS=null; //序列化后数据流给ByteArrayOutputStream 来保存。 //ByteArrayOutputStream 可转成字符串或字节数组 ByteArrayOutputStream BAOS=new ByteArrayOutputStream(); //ByteArrayInputStream 可接收一个字节数组 "byte[] "。供反序列化做参数 //ByteArrayInputStream BAIS=null; //反序列化使用的输入流 //ObjectInputStream OIS=null; try { OOS = new ObjectOutputStream(BAOS); OOS.writeObject(o); byte[] buff = BAOS.toByteArray(); /* * 由于byte[]数组是从ObjectOutputStream之后得来的,那么是不可以new * String(buff)的,因为其中包含了不可见字符,根本不是一个字符串 */ //System.out.println("序列化成一个byte[]的字符串形式 : " + buff); // 转换成字符串 sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder(); ret = encoder.encode(buff); OOS.close(); } catch (Exception e) { } return ret; } public static Object DeSerializeObjectFromString(String s){ Object o = null; try { byte[] DSbuff = new sun.misc.BASE64Decoder().decodeBuffer(s); //System.out.println("反序列化成一个byte[]字符串形式 : " + DSbuff); // 实现反序列化 ByteArrayInputStream BAIS = new ByteArrayInputStream(DSbuff); ObjectInputStream OIS = new ObjectInputStream(BAIS); o = OIS.readObject(); // ArrayList c=(ArrayList)(OIS.readObject()); //System.out.println("反序列化后取提Object: " + o.toString()); OIS.close(); }catch (Exception e) { e.printStackTrace(); //System.out.println("序列化时产生错误 "); } return o ; } public static void main(String args[]){ // IUser user = new User(); // user.setUserId("0001"); // user.setUserName("aaabbbbbb"); // user.setPassword(null); // String s = CommObject.SerializeObjectToString(user); // System.out.println(s); // IUser user2 = new User(); // user2 = (IUser)CommObject.DeSerializeObjectFromString(s); // System.out.println(user2.getUserName()); } }
java WebService 序列化(庆祝开博)
最新推荐文章于 2021-02-21 16:32:12 发布