码迷,mamicode.com
首页 > 移动开发 > 详细

Android 序列化 反序列功能

时间:2015-11-12 00:05:59      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:

 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 }

 

Android 序列化 反序列功能

标签:

原文地址:http://www.cnblogs.com/xushihai/p/4957692.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!