序列化+fastjson和java各種數據對象相互轉化


序列化的定義

  • 序列化就是一種用來處理對象流的機制
    所謂對象流也就是將對象的內容進行流化。可以對流化后的對象進行讀寫操作,也可將流化后的對象傳輸於網絡之間。
  • 序列化是將對象轉換為容易傳輸的格式的過程
    例如,可以序列化一個對象,然后使用 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());

    }
}

參考資料

JAVA中,序列化是指的什么?有何用途?
fastjson 第三方jar和java各種數據對象相互轉化


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM