`

序列化,反序列化

    博客分类:
  • j2me
DOS 
阅读更多
public class SerializeTest implements Serializable {

        int member1;
        long member2;
        String member3;
        boolean member4;

        public SerializeTest() {
        }

        public SerializeTest(int m1, long m2, String m3, boolean m4) {
            member1 = m1;
            member2 = m2;
            member3 = m3;
            member4 = m4;
        }

        public byte[] serialize() {
            byte[] ret = null;
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            DataOutputStream dos = new DataOutputStream(baos);
            try {
                dos.writeInt(member1);
                dos.writeLong(member2);
                dos.writeUTF(member3);
                dos.writeBoolean(member4);
                ret = baos.toByteArray();
                dos.close();
                baos.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return ret;
        }
 public void deserialize(byte[] data) {
            ByteArrayInputStream bais = new ByteArrayInputStream(data);
            DataInputStream dis = new DataInputStream(bais);
            try {
                member1 = dis.readInt();
                member2 = dis.readLong();
                member3 = dis.readUTF();
                member4 = dis.readBoolean();

                dis.close();
                bais.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

/*
* 把序列化和反序列化封装成一个类Account
*/
import java.io.*;
public class Account {
private String []message;
public Account(){}
public Account(String []message)
{
this.message=message;
}

public void setMessage(String []message)
{
this.message=message;
}
public String[] getMessage()
{
return message;
}

/*
* 序列化方法,把该对象序列化为字节流(数组)以便于RMS存储、管理 *
*/
public byte[] serialize()throws IOException
{
ByteArrayOutputStream byteArray=new ByteArrayOutputStream();
DataOutputStream data=new DataOutputStream(byteArray);
int num=message.length;
data.writeInt(num);//先序列化个数
for(int i=0;i<message.length;i++)
data.writeUTF(message[i]);
byteArray.close();
data.close();
return byteArray.toByteArray();
}

//反序列化
public void deserialize(byte []data)throws IOException
{
ByteArrayInputStream byteArray=new ByteArrayInputStream(data);
DataInputStream dataIN=new DataInputStream(byteArray);
int num=dataIN.readInt();//反序列化得到个数,该个数作为循环次数
message=null
message=new String[num];
for(int i=0;i<num;i++)
message[i]=dataIN.readUTF();
byteArray.close();
dataIN.close();
}
}


将对象转换成字节数组
import java.io.ByteArrayInputStream;  
import java.io.ByteArrayOutputStream;  
import java.io.DataInputStream;  
import java.io.DataOutputStream;  
import java.io.IOException;  
  
public class PhoneCard {  
    private int password;// 电话密码  
    private long cardNumber;// 电话卡卡号  
    private double balance;// 电话卡余额  
    private String conncetNumber;// 电话卡接入号码  
    private boolean connected;// 电话是否接通  
  
    //将对象转换成字节数组  
    public byte[] PhoneCard2Byte() throws IOException{  
        byte[] phonecard;// 用于存放转换后的对象  
        ByteArrayOutputStream baos = new ByteArrayOutputStream();// 字节输出流  
        DataOutputStream dos = new DataOutputStream(baos);// 数据输出流用于包装字节输出流  
        dos.writeInt(password);  
        dos.writeLong(cardNumber);  
        dos.writeDouble(balance);  
        dos.writeUTF(conncetNumber);  
        dos.writeBoolean(connected);  
        phonecard = baos.toByteArray();// 将写入的数据转换成字节数组  
        dos.close();  
        baos.close();  
        return phonecard;  
    }  
    //将字节数组装换成PhoneCard对象  
    public static  PhoneCard byte2PhonCard(byte[] phonecard)throws IOException{  
        PhoneCard pc = new PhoneCard();  
        ByteArrayInputStream bais = new ByteArrayInputStream(phonecard);// 字节输入流  
        DataInputStream dis = new DataInputStream(bais);// 数据输入流用于包装字节输入流  
        // 从流中读取数据,顺序要和写入时一至  
        pc.setPassword(dis.readInt());  
        pc.setCardNumber(dis.readLong());  
        pc.setBalance(dis.readDouble());  
        pc.setConncetNumber(dis.readUTF());  
        pc.setConnected(dis.readBoolean());  
        dis.close();  
        bais.close();  
        return pc;// 返回PhoneCard对象  
          
    }  
  
    // 返回对象的字符串类型  
    public String toString(){  
        return "电话密码 : " + password + "     电话卡号 :" + cardNumber + "    电话余额 :"  
                + balance + "    接入号码 :" + conncetNumber + "    接通否 :"  
                + connected;  
    }  
    public int getPassword() {  
        return password;  
    }  
  
    public void setPassword(int password) {  
        this.password = password;  
    }  
  
    public long getCardNumber() {  
        return cardNumber;  
    }  
  
    public void setCardNumber(long cardNumber) {  
        this.cardNumber = cardNumber;  
    }  
  
    public double getBalance() {  
        return balance;  
    }  
  
    public void setBalance(double balance) {  
        this.balance = balance;  
    }  
  
    public String getConncetNumber() {  
        return conncetNumber;  
    }  
  
    public void setConncetNumber(String conncetNumber) {  
        this.conncetNumber = conncetNumber;  
    }  
  
    public boolean isConnected() {  
        return connected;  
    }  
  
    public void setConnected(boolean connected) {  
        this.connected = connected;  
    }  
      
}  
分享到:
评论

相关推荐

    delphi_JSON序列化反序列化

    本篇将深入探讨Delphi中的JSON序列化和反序列化技术。 一、JSON简介 JSON是一种独立于语言的数据表示格式,它基于ECMAScript的一个子集。一个有效的JSON对象通常包含键值对(key-value pairs)的集合,数组或其他...

    自己实现的protobuf 压缩类,并能序列化反序列化

    描述中提到的“序列化反序列化”是protobuf的核心特性。序列化是将对象的状态转化为可存储或可传输的形式的过程,而反序列化则是将这种形式的数据恢复为原来的对象状态。在protobuf中,开发者定义数据结构的协议文件...

    C#或.net json序列化反序列化,适用于与第三方系统做接口用

    C#或.net json序列化反序列化,适用于与第三方系统做接口用,实体自动转json字符串,json自动转视图

    Json序列化反序列化工具:JsonToolsJson序列化反序列化工具:JsonTools Json序列化反序列化工具:JsonTools

    JsonTools是一个不错的JSON序列化和反序列化功能包

    python序列化反序列化和异常处理笔记.doc

    Python的序列化与反序列化是将数据结构或对象转换为可存储或传输的格式,然后再次转换回原数据的过程。这一过程对于保存程序状态、跨进程通信、数据持久化等场景非常有用。Python提供了多种序列化库,如pickle、json...

    c# CS登录实现(序列化反序列化)LoginProcessVersion1.0

    综上所述,"c# CS登录实现(序列化反序列化)LoginProcessVersion1.0"项目涉及了客户端与服务器间的通信,其中序列化和反序列化是数据交换的核心技术。理解并掌握这些概念对于开发任何需要网络交互的应用都是至关...

    C#和Java的序列化反序列化

    在编程领域,序列化和反序列化是两个关键的概念,特别是在跨平台通信、持久化存储以及数据传输中扮演着重要角色。本篇文章将深入探讨C#和Java中的序列化与反序列化机制。 首先,我们要了解什么是序列化。序列化是指...

    dotnet-Unity最快的序列化反序列化工具

    "dotnet-Unity最快的序列化反序列化工具"是一个专为提升.NET开发效率而设计的解决方案,特别是在Unity环境中。这个工具被称为DreamSerialize,从其文件名"DreamSerialize-master"可以推断,它可能是开源项目,并且是...

    jackson库实现定制化的java序列化反序列化操作

    标题中的“jackson库实现定制化的java序列化反序列化操作”指的是利用Jackson库的能力,通过自定义规则来控制对象的序列化和反序列化过程。这通常涉及到创建自定义的`JsonSerializer`和`JsonDeserializer`,或者使用...

    delphi_BaseObject_json序列化反序列化1

    4. **处理数组**:在“BaseObject_json序列化反序列化数组”这个场景下,我们可能需要处理BaseObject对象的数组。这需要在序列化时将数组转换为JSON数组,每个元素都是一个BaseObject的JSON表示。反序列化时,接收...

    .net c# 序列化 反序列化

    Serialize Deserialize .net c# 序列化 反序列化

    序列化反序列化例题net

    在.NET框架中,序列化和反序列化是两个重要的概念,它们主要用于数据持久化、网络传输和跨进程通信。理解并熟练运用这些技术对于任何.NET开发者来说都是至关重要的。 序列化是将对象的状态(包括其属性和字段)转换...

    Cereal序列化反序列化

    Cereal支持将对象序列化为JSON、XML和二进制格式,并提供了灵活的API来自定义序列化和反序列化过程。它可以序列化基本数据类型、STL容器、自定义类和结构体等。不需要安装,只需把hpp文件包含在项目即可。

    C#序列化与反序列化(包括复杂xml对象)

    在C#编程中,序列化和反序列化是两个关键的概念,它们主要用于对象状态的持久化和恢复。本文将深入探讨C#中的XML序列化和反序列化技术,包括如何将XML文档解析为对象,以及如何将对象转换回XML文档进行存储。我们将...

    Newtonsoft.Json.Net20【2.0版本】 Json 序列化反序列化

    Newtonsoft.Json.Net20 Json 序列化反序列化

    C# 序列化反序列化

    在编程领域,序列化和反序列化是两个关键的概念,特别是在C#中。它们用于将对象的状态转换为可存储或可传输的形式,如文本或二进制数据,然后能够恢复成原来的对象。在这个特定的场景中,我们看到的是一个利用C#进行...

    Newtonsoft.Json.Net20【4.0版本】 Json 序列化反序列化

    Newtonsoft.Json.Net20【4.0版本】 Json 序列化反序列化

    对象和Xml序列化反序列化

    总结一下,C#中的对象和XML序列化反序列化是一个强大的工具,可以方便地处理数据的转换。它不仅可以简化数据存储和网络传输,还能在不同应用程序之间共享数据。熟练掌握这一技术,对于提升C#开发者的技能至关重要。...

    C#对象序列化反序列化保存与读取和对象直接保存与读取

    本主题将深入探讨如何在Windows Forms(WF)环境中,利用C#语言进行对象的直接保存与读取,以及通过对象序列化和反序列化的方式实现对象的保存与恢复。 首先,我们来理解什么是对象的直接保存与读取。在C#中,可以...

    C#序列化反序列化实例

    在IT行业中,序列化和反序列化是两个关键的概念,特别是在使用编程语言如C#时。它们主要用于将对象的状态转化为可存储或传输的数据格式,以及将这种数据还原为原来的对象状态。下面我们将深入探讨C#中的序列化和反...

Global site tag (gtag.js) - Google Analytics