2017-03-03 27 views
1

任何人都可以告訴或分享一些關於序列化和反序列化重要性的有用鏈接嗎?我無法理解,僅僅是通過網絡傳輸對象還是將它們存儲到我們使用的文件序列化和反序列化或任何其他方面涉及?序列化和反序列化的重要性

回答

1

序列化是將您的實例轉換爲字節的過程。現在你用這些字節做什麼完全取決於你。

休眠例如使用序列化爲分離的實體。

還可以傳遞爲進程間通信的一些字節(您的實例)等

+0

謝謝您的回答 –

+0

,我有我在哪裏調用REST資源,並得到一個場景一個json字符串作爲響應。是否需要反序列化它?我正在使用apache hhtp客戶端和Gson API。 –

+0

@MohdToufeeqkhan,這是一個不同的'序列化'。這不是jdk,而是'json序列化/反序列化'。再說一次,你用這個json做什麼只取決於你。通常你反序列化輸入,是的。 – Eugene

1

可以檢查此Source

Java提供了一個機制,稱爲對象序列,其中一個對象可以被表示爲包含對象數據的字節序列以及有關對象類型和存儲在對象中的數據類型的信息。

將序列化對象寫入文件後,可以從文件讀取並反序列化,即可以使用表示對象及其數據的類型信息和字節來重新創建內存中的對象。

最令人印象深刻的是整個過程獨立於JVM,這意味着一個對象可以在一個平臺上序列化並在完全不同的平臺上反序列化。

注 - 將對象序列化到文件時,Java中的標準約定是給文件一個.ser擴展名。例如,以序列化

import java.io.*; 
public class SerializeDemo { 



public static void main(String [] args) { 
    Employee e = new Employee(); 
    e.name = "Reyan Ali"; 
    e.address = "Phokka Kuan, Ambehta Peer"; 
    e.SSN = 11122333; 
    e.number = 101; 

    try { 
    FileOutputStream fileOut = 
    new FileOutputStream("/tmp/employee.ser"); 
    ObjectOutputStream out = new ObjectOutputStream(fileOut); 
    out.writeObject(e); 
    out.close(); 
    fileOut.close(); 
    System.out.printf("Serialized data is saved in /tmp/employee.ser"); 
    }catch(IOException i) { 
    i.printStackTrace(); 
    } 


} 
} 

例如反序列化

import java.io.*; 
public class DeserializeDemo { 




public static void main(String [] args) { 
    Employee e = null; 
    try { 
    FileInputStream fileIn = new FileInputStream("/tmp/employee.ser"); 
    ObjectInputStream in = new ObjectInputStream(fileIn); 
    e = (Employee) in.readObject(); 
    in.close(); 
    fileIn.close(); 
    }catch(IOException i) { 
    i.printStackTrace(); 
    return; 
    }catch(ClassNotFoundException c) { 
    System.out.println("Employee class not found"); 
    c.printStackTrace(); 
    return; 
    } 

    System.out.println("Deserialized Employee..."); 
    System.out.println("Name: " + e.name); 
    System.out.println("Address: " + e.address); 
    System.out.println("SSN: " + e.SSN); 
    System.out.println("Number: " + e.number); 


} 
} 

輸出應該像

Deserialized Employee... 
Name: Reyan Ali 
Address:Phokka Kuan, Ambehta Peer 
SSN: 0 
Number:101 
+0

感謝您的回答 –