gpt4 book ai didi

java - 序列化:将对象作为 URL 参数传递并提取值

转载 作者:行者123 更新时间:2023-12-01 14:19:29 26 4
gpt4 key购买 nike

我想通过 URL 参数传递对象,通过序列化将其转换为字符串,然后通过反序列化取回对象。

这是我所做的:

在 URL 参数创建期间:

SerializationUtils.getAsString(localMarketHomeDTO.getPointInTime()); //serializing it

在提取值期间:

SerializationUtils.getAsObject(paramValue.toString(),Class.forName("java.util.Date")); //deserializing it

此处 localMarketHomeDTO.getPointInTime() 的类型为 java.util.Date

SerializationUtils是:

public class SerializationUtils{

private SerializationUtils(){

}

public static <T extends Serializable> String getAsString(T object) throws Exception {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(object);
objectOutputStream.flush();
return byteArrayOutputStream.toString("UTF-8");
}

public static <T> T getAsObject(String string, Class<T> clazz) throws Exception {
byte[] byteArray = string.getBytes("UTF-8");
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
T object = clazz.cast(objectInputStream.readObject());
return object;
}
}

但我有异常(exception):

'java.util.Date; local class incompatible: stream classdesc serialVersionUID = 7523895402267505689, local class serialVersionUID = 7523967970034938905' due to 'java.io.InvalidClassException: java.util.Date; local class incompatible: stream classdesc serialVersionUID = 7523895402267505689, local class serialVersionUID = 7523967970034938905'

如何解决这个问题?

最佳答案

使用base64将字节数组转换为字符串:java.util.Base64.getEncoder().encodeToString(byte[] src)java.util.Base64.getDecoder().decode(String src)

关于java - 序列化:将对象作为 URL 参数传递并提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17743985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com