zoukankan      html  css  js  c++  java
  • byte[]与Object转化,hessian序列化/反序列化

    【1】Object >> byte[].

    约束:该对象必须可序列化,且其包含的各属性对象,也必须可序列化

    注意:注释掉的部分为hessian实现方式

     

        public static byte[] objectToBytes(Object obj){
            byte[] result = null;
            ByteArrayOutputStream byteOutputStream = null;
            ObjectOutputStream objectOutputStream = null;
           
    //        Hessian2Output objectOutputStream2 = null;
           
            try{
                byteOutputStream = new ByteArrayOutputStream();
                objectOutputStream = new ObjectOutputStream(byteOutputStream);
               
                objectOutputStream.writeObject(obj);
                objectOutputStream.flush();
               
    //            objectOutputStream2.startMessage();
    //            objectOutputStream2.writeObject(obj);
    //            objectOutputStream2.completeMessage();
               
                result = byteOutputStream.toByteArray();
            }catch(Exception e){
                e.printStackTrace();
            } finally {
                if(null != objectOutputStream){
                    try{
                        objectOutputStream.close();
                        byteOutputStream.close();
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
            }     
           
            return result;
        }

     

    【2】byte[] >> Object

    约束:如果byte[]里的类型与所转类型不同,则会抛异常java.lang.ClassCastException

    注意:注释掉的部分为hessian实现方式

     

        public static Object bytesToObject(byte[] bytes){
           
            Object result = null;
            ByteArrayInputStream byteInputStream = null;
            ObjectInputStream objectInputStream = null;
           
    //        Hessian2Input objectInputStream2 = null;
           
            try{
                byteInputStream = new ByteArrayInputStream(bytes);
                objectInputStream = new ObjectInputStream(byteInputStream);
               
                result = objectInputStream.readObject();
               
    //            objectInputStream2.startMessage();
    //            result = objectInputStream2.readObject();
    //            objectInputStream2.completeMessage();
               
            }catch(Exception e){
                e.printStackTrace();
            }finally {
                if(null != objectInputStream){
                    try{
                        objectInputStream.close();
                        byteInputStream.close();
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                }
            }
           
            return result;
        }

  • 相关阅读:
    巧用SQL Server Profiler
    Linq结果直接返回实体对象
    C#(MVC) Word 替换,填充表格,导出并下载PDF文档
    C#匿名类型(Anonymous Type)学习日记
    C#Lambda表达式学习日记
    C#事件(Event)学习日记
    C#委托(Delegate)学习日记
    C#隐私信息(银行账户,身份证号码,名字)中间部分特殊字符替换(*)
    CSS布局模型
    Visual Studio 内置快速生产代码简写集合
  • 原文地址:https://www.cnblogs.com/alipayhutu/p/2563556.html
Copyright © 2011-2022 走看看