Deserializarea

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

În informatică, în programarea orientată pe obiecte , deserializarea unui obiect înseamnă reconstituirea acestuia pornind de la reprezentarea sa binară obținută dintr-un fișier sau dintr-un canal de rețea .

Procesul invers se numește serializare și transformă un obiect în reprezentarea sa binară care poate fi ulterior salvat pe o memorie de masă sau transmis pe un canal de rețea .

Nu confundați deserializarea cu citirea datelor sau parametrilor dintr-un fișier sau canal de rețea pentru a obține proprietățile de încărcat într-un obiect.

Deserializarea unui obiect

Procedura vizuală de bază

Când deserializați un obiect, formatul transportului determină dacă va fi creat un flux sau un obiect de fișier. După determinarea formatului transportului, puteți apela metoda Serialize sau Deserialize, după cum este necesar. Pentru a deserializa un obiect

  1. Construiți un XmlSerializer utilizând tipul de obiect pentru deserializare.
  2. Apelați metoda Deserialize pentru a produce o replică a obiectului. După deserializare, obiectul returnat trebuie aruncat la tipul originalului, așa cum se arată în exemplul următor, unde obiectul este deserializat într-un fișier, deși poate fi deserializat într-un flux.
 Dim myObject Ca MySerializableClass
  'Construiți o instanță a XmlSerializer cu tipul
  „obiectului care este deserializat.
  Dim mySerializer Ca XmlSerializer = Nou      
  XmlSerializer ( GetType ( MySerializableClass ))
  „Pentru a citi fișierul, creați un FileStream.
  Dim myFileStream Ca FileStream = _
  FileStream nou ( „myFileName.xml” , FileMode . Deschis )
  'Apelați metoda Deserialize și aruncați la tipul de obiect.
  myObject = CType ( _
  serializatorul meu . Deserialize ( myFileStream ), MySerializableClass )

Procedură în C #

 MySerializableClass myObject ;
  // Construiți o instanță a XmlSerializer cu tipul
  // a obiectului care este deserializat.
  XmlSerializer mySerializer = 
  nou XmlSerializer ( typeof ( MySerializableClass ));
  // Pentru a citi fișierul, creați un FileStream.
  FileStream myFileStream = 
  nou FileStream ( „myFileName.xml” , FileMode . Deschis );
  // Apelați metoda Deserialize și aruncați la tipul de obiect.
  myObject = ( MySerializableClass ) 
  serializatorul meu . Deserializați ( myFileStream )

Procedură în Java

Mai jos este un exemplu de clasă Java care încarcă un obiect Vector dintr-un fișier și, dacă fișierul nu există, îl creează.

 import java.io. * ;
 import java.util. * ;
 
 public class Serialize {
    
    / **
* @param obj '' '' 'Obiect' '' '' - Obiectul de salvat.
* @param nume de fișier '' '' 'Șir' '' '' - Fișierul în care să-l salvați.
* /
    public static void serializează ( obiectul care urmează să fie serializat , numele fișierului șir ) aruncă IOException {
        ObjectDutputStream objstream = new ObjectOutputStream (nou FileOutputStream (nume fișier));
        objstream . writeObject (de serializat );
        objstream . close ();
    }
    
    / **
* @param nume de fișier '' '' 'Șir' '' '' - Numele fișierului care conține obiectul serializat
* /
    Obiectul static public deserializează ( numele fișierului șir ) aruncă excepție {
        ObjectInputStream objstream = new ObjectInputStream ( nou FileInputStream ( nume fișier ));
        Obiect Obiect deserializat = objstream . readObject ();
        objstream . close ();
        returnează obiectul Deserializat ;
    }
    
    / **
* @param args '' '' 'String []' '' '' - argumentele liniei de comandă
* /
    public static void main ( String [] args ) {
        Vectorul v ;
        incearca {
            v = ( Vector ) deserializează ( "Amici.ser" ); // încercați să încărcați un Vector din fișierul Amici.ser
            Sistem . afară . println ( "Am citit:" + v );
        } catch ( Exception e ) {
            // În cazul în care nu pot citi fișierul, atunci încerc să îl creez
            Sistem . afară . println ( "Fișierul nu a fost găsit. Se creează." );
            v = nou Vector ();
            v . addElement ( „Peter” );
            v . addElement ( „Ioan” );
            v . addElement ( „Matei” );
            Sistem . afară . println ( "Am creat:" + v );
        }
        
        incearca {
            serializa ( v , "Amici.ser" ); // Serializați vectorul în fișierul Amici.ser
            Sistem . afară . println ( "Am salvat:" + v );
        } catch ( Exception e ) {
            Sistem . afară . print ( "Eroare la salvarea fișierului:" );
            și . printStackTrace ();
        }
    }
 }
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT