Java 如何将对象序列化为字符串

Java 如何将对象序列化为字符串,第1张

Java 如何将对象序列化为字符串

你应该使用BLOB。使用JDBC非常简单。

你发布的第二个代码的问题是编码。你还应该对字节进行编码,以确保它们均不会失败。

如果你仍然想将其记录为字符串,则可以使用java.util.base64对字节进行编码。

仍然应该将CLOB用作数据类型,因为你不知道序列化数据将持续多长时间。

这是一个如何使用它的示例。

import java.util.*;import java.io.*;public class ToStringSample {    public static void main( String [] args )  throws IOException,          ClassNotFoundException {        String string = toString( new SomeClass() );        System.out.println(" Enpred serialized version " );        System.out.println( string );        SomeClass some = ( SomeClass ) fromString( string );        System.out.println( "nnReconstituted object");        System.out.println( some );    }       private static Object fromString( String s ) throws IOException ,ClassNotFoundException {        byte [] data = base64.getDeprer().depre( s );        ObjectInputStream ois = new ObjectInputStream(        new ByteArrayInputStream(  data ) );        Object o  = ois.readObject();        ois.close();        return o;   }        private static String toString( Serializable o ) throws IOException {        ByteArrayOutputStream baos = new ByteArrayOutputStream();        ObjectOutputStream oos = new ObjectOutputStream( baos );        oos.writeObject( o );        oos.close();        return base64.getEnprer().enpreToString(baos.toByteArray());     }} class SomeClass implements Serializable {    private final static long serialVersionUID = 1; // See Nick's comment below    int i    = Integer.MAX_VALUE;    String s = "ABCDEFGHIJKLMNOP";    Double d = new Double( -1.0 );    public String toString(){        return  "SomeClass instance says: Don't worry, "    + "I'm healthy. Look, my data is i = " + i     + ", s = " + s + ", d = " + d;    }}

输出:

C:samples>javac *.javaC:samples>java ToStringSampleEnpred serialized versionrO0ABXNyAAlTb21lQ2xhc3MAAAAAAAAAAQIAA0kAAWlMAAFkdAASTGphdmEvbGFuZy9Eb3VibGU7TAABc3QAEkxqYXZhL2xhbmcvU3RyaW5nO3hwf////3NyABBqYXZhLmxhbmcuRG91YmxlgLPCSilr+wQCAAFEAAV2YWx1ZXhyABBqYXZhLmxhbmcuTnVtYmVyhqyVHQuU4IsCAAB4cL/wAAAAAAAAdAAQQUJDREVGR0hJSktMTU5PUA==Reconstituted objectSomeClass instance says: Don't worry, I'm healthy. Look, my data is i = 2147483647, s = ABCDEFGHIJKLMNOP, d = -1.0

注意:对于Java 7和更早版本,你可以在此处看到原始答案



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5146296.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-18
下一篇2022-11-17

发表评论

登录后才能评论

评论列表(0条)

    保存