Java 中將物件序列化為字串

Sheeraz Gul 2022年6月2日
Java 中將物件序列化為字串

本教程演示如何在 Java 中將物件序列化為字串。

Java 中將物件序列化為字串

要將物件序列化為字串,我們可以使用 base 64 編碼。我們可以通過建立兩個類來實現序列化,一個類將實現 Serializable 類,另一個類將用於建立 Serializable 類的物件並對其進行序列化。

請參閱 Java 示例:

package delftstack;

import java.util.*;
import java.io.*;

public class Serialize_Object {

    public static void main( String [] args )  throws IOException,
                                                      ClassNotFoundException {
        String Serialized_String = To_String( new Demo_Serialize() );
        System.out.println(" The Serialized String " );
        System.out.println( Serialized_String );
        Demo_Serialize Original_object = ( Demo_Serialize ) From_String( Serialized_String );
        System.out.println( "\n\nThe Original String");
        System.out.println( Original_object );


    }

   private static Object From_String( String s ) throws IOException ,
                                                       ClassNotFoundException {
        byte [] Byte_Data = Base64.getDecoder().decode( s );
        ObjectInputStream Object_Input_Stream = new ObjectInputStream( new ByteArrayInputStream(Byte_Data) );
        Object Demo_Object  = Object_Input_Stream.readObject();
        Object_Input_Stream.close();
        return Demo_Object;
   }

    private static String To_String( Serializable Demo_Object ) throws IOException {
        ByteArrayOutputStream Byte_Array_Output_Stream = new ByteArrayOutputStream();
        ObjectOutputStream Object_Output_Stream = new ObjectOutputStream( Byte_Array_Output_Stream );
        Object_Output_Stream.writeObject( Demo_Object );
        Object_Output_Stream.close();
        return Base64.getEncoder().encodeToString(Byte_Array_Output_Stream.toByteArray());
    }
}

class Demo_Serialize implements Serializable {

    private final static long serialVersionUID = 1;

    int i    = Integer.MAX_VALUE;
    String s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    Double d = new Double( -1.0 );
    public String toString(){
        return  "DelftStack is a resource for everyone interested in "
        		+ "programming, embedded software, and electronics. "
        		+ "It covers the programming languages like Python, "
        		+ "C/C++, C#, and so on in this website's first "
        		+ "development stage. Open-source hardware also falls "
        		+ "in the website's scope, like Arduino, Raspberry Pi, and BeagleBone.";
    }
}

上面的程式碼將建立一個 Demo_Serialize 類的物件並將該物件序列化為一個字串。上面程式碼的輸出將是:

 The Serialized String
rO0ABXNyABlkZWxmdHN0YWNrLkRlbW9fU2VyaWFsaXplAAAAAAAAAAECAANJAAFpTAABZHQAEkxqYXZhL2xhbmcvRG91YmxlO0wAAXN0ABJMamF2YS9sYW5nL1N0cmluZzt4cH////9zcgAQamF2YS5sYW5nLkRvdWJsZYCzwkopa/sEAgABRAAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHC/8AAAAAAAAHQAGkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla


The Original String
DelftStack is a resource for everyone interested in programming, embedded software, and electronics. It covers the programming languages like Python, C/C++, C#, and so on in this website's first development stage. Open-source hardware also falls in the website's scope, like Arduino, Raspberry Pi, and BeagleBone.
Author: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

相關文章 - Java Object

相關文章 - Java String