序列化的定義
- 序列化就是一種用來處理對象流的機制
所謂對象流也就是將對象的內容進行流化。可以對流化后的對象進行讀寫操作,也可將流化后的對象傳輸於網絡之間。 - 序列化是將對象轉換為容易傳輸的格式的過程
例如,可以序列化一個對象,然后使用 HTTP 通過 Internet 在客戶端和服務器之間傳輸該對象。在另一端,反序列化將從該流重新構造對象。
序列化的目的
對象序列化的最主要的用處就是在傳遞,和保存對象(object)的時候,保證對象的完整性和可傳遞性。譬如通過網絡傳輸,或者把一個對象保存成一個文件的時候,要實現序列化接口。
- 序列化是為了解決在對對象流進行讀寫操作時所引發的問題
- 序列化是對象永久化的一種機制
確切的說應該是對象的序列化,一般程序在運行時,產生對象,這些對象隨着程序的停止運行而消失,但如果我們想把某些對象(因為是對象,所以有各自不同的特性)保存下來,在程序終止運行后,這些對象仍然存在,可以在程序再次運行時讀取這些對象的值,或者在其他程序中利用這些保存下來的對象。這種情況下就要用到對象的序列化。
序列化的實現
將需要被序列化的類實現Serializable接口,該接口沒有需要實現的方法,implements Serializable只是為了標注該對象是可被序列化的,然后使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,接着,使用ObjectOutputStream對象的writeObject(Object obj)方法就可以將參數為obj的對象寫出(即保存其狀態),要恢復的話則用輸入流。
Alibaba fastjson對java對象的序列化/反序列化操作
import java.util.Map;
import com.meidusa.fastjson.JSON;
import com.meidusa.fastjson.JSONObject;
import com.saic.grape.entity.KeyValue;
import com.saic.grape.entity.UserLogin;
/**
* Copyright (C), 2014-4-22,
* @version 1.0
* @date 2014-4-22 javaBean轉化為字符串公共類
* @author SHENBO
*/
public class FastJsonUtil
{
/**
* 將javabean轉化為序列化的json字符串
* @param keyvalue
* @return
*/
public static Object beanToJson(KeyValue keyvalue) {
String textJson = com.meidusa.fastjson.JSON.toJSONString(keyvalue);
Object objectJson = JSON.parse(textJson);
return objectJson;
}
/**
* 將string轉化為序列化的json字符串
* @param keyvalue
* @return
*/
public static Object textToJson(String text) {
Object objectJson = JSON.parse(text);
return objectJson;
}
/**
* json字符串轉化為map
* @param s
* @return
*/
public static Map stringToCollect(String s) {
Map m = (Map) JSONObject.parseObject(s);
return m;
}
/**
* 將map轉化為string
* @param m
* @return
*/
public static String collectToString(Map m) {
String s = JSONObject.toJSONString(m);
return s;
}
/**
* json字符串轉化為javabean
* @param s
* @return
*/
public static UserLogin jsonToJavaBean(String s) {
UserLogin userLogin = JSONObject.parseObject(s, UserLogin.class);
return userLogin;
}
public static void main(String[] args) {
String str = "{\"appCode\":\"Grape\",\"appVersion\":\"1.0\",\"deviceId\":\"236fa43ed352cc235\",\"sourceId\":\"1c1c1c\",\"userAccount\":\"13812345678\",\"userToken\":\"123456789\"}";
Map ma = FastJsonUtil.stringToCollect(str);
String ss = "{\"velModelId\":10000,\"velModelName\":\"奧迪\"}";
//LoginResultVelModel vd = FastJsonUtil.jsonToJavaBean(ss);
//System.out.println(vd.getVelModelName());
}
}
