java序列化

public class SerializationUtil {

    public static byte[] serialize(Person person) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try (ObjectOutputStream oos = new ObjectOutputStream(baos)) {
            oos.writeObject(person);
            return baos.toByteArray();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public static Person deserialize(byte[] bytes) {
        try (ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
             ObjectInputStream ois = new ObjectInputStream(bais)) {
            return (Person) ois.readObject();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
public static void main(String[] args) {
        Person person = new Person("Alice", 30);

        // 序列化
        byte[] serializedPerson = SerializationUtil.serialize(person);
        System.out.println("Serialized person: " + serializedPerson);

        // 反序列化
        Person deserializedPerson = SerializationUtil.deserialize(serializedPerson);
        System.out.println("Deserialized person: " + deserializedPerson);
    }
}

确保所有的可序列化类都实现了 Serializable 接口。
处理异常时要小心,特别是 ClassNotFoundException,它可能会在反序列化时抛出。
使用 try-with-resources 语句来确保流被正确关闭。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中,我们可以使用 Jackson 库来实现 LocalDateTime 类型的序列化和反序列化。下面是全局配置的示例代码: ```java import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; ObjectMapper objectMapper = new ObjectMapper(); objectMapper.registerModule(new JavaTimeModule()); objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); ``` 这里,我们创建了 ObjectMapper 对象,并注册了 JavaTimeModule,该模块支持 Java 8 中的日期和时间 API。然后,我们禁用了将日期序列化为时间戳的选项。 接下来,我们可以使用这个 ObjectMapper 对象来进行 LocalDateTime 类型的序列化和反序列化。例如,如果我们要将一个 LocalDateTime 对象序列化为 JSON 字符串,可以这样做: ```java LocalDateTime dateTime = LocalDateTime.now(); String json = objectMapper.writeValueAsString(dateTime); ``` 如果我们要将一个表示 LocalDateTime 的 JSON 字符串反序列化为 LocalDateTime 对象,可以这样做: ```java String json = "{\"year\":2021,\"month\":\"JULY\",\"dayOfMonth\":12,\"hour\":14,\"minute\":30,\"second\":0,\"nano\":0}"; LocalDateTime dateTime = objectMapper.readValue(json, LocalDateTime.class); ``` 这里,我们使用了 readValue 方法来将 JSON 字符串反序列化为 LocalDateTime 对象。注意,我们需要指定要反序列化的目标类型,即 LocalDateTime.class。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值