java将类序列化为字符串,和将字符串反序列化类。未涉及到序列化字符串的加密,如果考虑安全,需要使用加密算法。


可以考虑用google json序列化。


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
/**
 * Created by fashici on 17-6-15.
 */
public class Experiment implements Serializable {
    protected final static Logger LOGGER = LoggerFactory.getLogger(Experiment.class);
    private final static long serialVersionUID = 1;
    private final static String CHARSET_NAME = "ISO-8859-1";
    /**
     * @brief 字符串反序列化为类
     * @param serializedString
     * @return
     */
    public static Experiment deserialized(String serializedString){
        try {
            ByteArrayInputStream bis = new ByteArrayInputStream(
                    serializedString.getBytes(CHARSET_NAME));
            ObjectInputStream ois = new ObjectInputStream(bis);
            Experiment experiment = (Experiment) ois.readObject();
            ois.close();
            return experiment;
        } catch (Exception e) {
            LOGGER.info("deserialized error! serializedString is {}.", serializedString, e);
            Experiment experiment = new Experiment();
            return experiment;
        }
    }
    /**
     * @brief 类序列化为字符串
     * @return
     */
    public String serialized() {
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            oos.writeObject(this);
            oos.flush();
            String serializedString = baos.toString(CHARSET_NAME);
            baos.close();
            oos.close();
            return serializedString;
        } catch (Exception e) {
            LOGGER.info("serialized error!", e);
            return "";
        }
    }
}


参考:

https://stackoverflow.com/questions/13568248/how-to-binary-deserialize-object-into-form-string