• Android 序列化 反序列功能


     1  /**
     2      * 序列化对象
     3      *
     4      * @return  序列化后的字符串
     5      */
     6     private String serializeObject(Object object) {
     7         ByteArrayOutputStream byteArrayOutputStream=null;
     8         ObjectOutputStream objectOutputStream=null;
     9         String serStr="";
    10         try{
    11             byteArrayOutputStream = new ByteArrayOutputStream();
    12             objectOutputStream = new ObjectOutputStream(
    13                     byteArrayOutputStream);
    14             objectOutputStream.writeObject(object);
    15             serStr = byteArrayOutputStream.toString("ISO-8859-1");
    16             serStr = java.net.URLEncoder.encode(serStr, "UTF-8");
    17         }catch (IOException ex){
    18 
    19         }finally {
    20             if(objectOutputStream!=null)
    21                 try {
    22                     objectOutputStream.close();
    23                 } catch (IOException e) {
    24                     e.printStackTrace();
    25                 }
    26             if(byteArrayOutputStream!=null)
    27                 try {
    28                     byteArrayOutputStream.close();
    29                 } catch (IOException e) {
    30                     e.printStackTrace();
    31                 }
    32             return serStr;
    33         }
    34     }
    35 
    36     /**
    37      * 反序列化对象
    38      *
    39      * @param str
    40      * @return 反序列化后的对象
    41      */
    42     private Object deSerializeObject(String str){
    43         String redStr = null;
    44         try {
    45             redStr = URLDecoder.decode(str, "UTF-8");
    46         } catch (UnsupportedEncodingException e) {
    47             e.printStackTrace();
    48         }
    49         ByteArrayInputStream byteArrayInputStream=null;
    50         ObjectInputStream objectInputStream=null;
    51         Object object=null;
    52         try{
    53             byteArrayInputStream = new ByteArrayInputStream(
    54                     redStr.getBytes("ISO-8859-1"));
    55             objectInputStream = new ObjectInputStream(
    56                     byteArrayInputStream);
    57             object=objectInputStream.readObject();
    58         }catch (Exception ex){
    59 
    60         }finally {
    61             if(objectInputStream!=null)
    62                 try {
    63                     objectInputStream.close();
    64                 } catch (IOException e) {
    65                     e.printStackTrace();
    66                 }
    67             if(byteArrayInputStream!=null)
    68                 try {
    69                     byteArrayInputStream.close();
    70                 } catch (IOException e) {
    71                     e.printStackTrace();
    72                 }
    73         }
    74         return object;
    75     }

    测试示例:

     1 public void testSerialize(){
     2         Person person = new Person();
     3         person.setName("LULU");
     4         person.setSex("bitch");
     5         person.setAddress("北京海淀");
     6         person.setAge(20);
     7         person.setTel("1231312");
     8         person.setEducation("小学");
     9         String str=serializeObject(person);
    10         Person newP= (Person) deSerializeObject(str);
    11         if(newP!=null){
    12             String s=newP.toString();
    13         }
    14     User user=new User("192.168.0.30",8080);
    15         String userStr=serializeObject(user);
    16         User deUser= (User) deSerializeObject(userStr);
    17         int p=deUser.query_port;
    18         List<User> users=new ArrayList<>();//序列化集合,只需要集合类的数据可以被序列化就行,序列化的方法跟其他的类序列化的方法一样
    19         users.add(user);
    20         String l=serializeObject(users);
    21         List<User> newL= (List<User>) deSerializeObject(l);
    22         newL.toString();
    23     }
    1 public class User implements Serializable {
    2     public  String query_ip;
    3     public int query_port;
    4     public User(String ip,int p){
    5         query_ip=ip;
    6         query_port=p;
    7     }
    8 }
     1 public class Person implements Serializable {
     2     /**
     3      *
     4      */
     5     private static final long serialVersionUID = 1L;
     6     String name;
     7     int age;
     8     String address;
     9     String education;
    10     String tel;
    11 
    12     public int getAge() {
    13         return age;
    14     }
    15 
    16     public void setAge(int age) {
    17         this.age = age;
    18     }
    19 
    20     public String getAddress() {
    21         return address;
    22     }
    23 
    24     public void setAddress(String address) {
    25         this.address = address;
    26     }
    27 
    28     public String getEducation() {
    29         return education;
    30     }
    31 
    32     public void setEducation(String education) {
    33         this.education = education;
    34     }
    35 
    36     public String getTel() {
    37         return tel;
    38     }
    39 
    40     public void setTel(String tel) {
    41         this.tel = tel;
    42     }
    43 
    44     public String getName() {
    45         return name;
    46     }
    47 
    48     public void setName(String name) {
    49         this.name = name;
    50     }
    51 
    52     public String getSex() {
    53         return sex;
    54     }
    55 
    56     public void setSex(String sex) {
    57         this.sex = sex;
    58     }
    59 
    60     String sex;
    61 
    62     @Override
    63     public String toString() {
    64         return "Person [name=" + name + ", age=" + age + ", address=" + address
    65                 + ", education=" + education + ", tel=" + tel + ", sex=" + sex
    66                 + "]";
    67     }
    68 }
  • 相关阅读:
    从针对接口编程到依赖注入
    DataRow 数组转化成DataTable
    Math 类的方法概要
    .net控件
    字符串反转
    DataTable
    Enabled设置为False时,前景色和背景色也不改变的TextBox 并居中
    C# 四舍五入 (解决四舍六入五成双的问题)
    查询最后一条数据
    C# toString()
  • 原文地址:https://www.cnblogs.com/xushihai/p/4957692.html
Copyright © 2020-2023  润新知