numpy——序列化

使用python的pickle库

在这里插入图片描述

使用numpy中的save()方法

在这里插入图片描述

### Java 中 String 的反序列化 在 Java 中,`String` 是一种特殊的对象,它是不可变的(immutable),因此它的序列化和反序列化过程是由 JVM 自动处理的。通常情况下,开发者不需要手动干预 `String` 的序列化或反序列化过程。 然而,在某些场景下,可能需要自定义反序列化逻辑或者对整个流程增加额外的功能(如日志记录)。以下是实现这一需求的方法: #### 使用 `readObject` 和 `writeObject` Java 提供了两个特殊方法——`private void writeObject(ObjectOutputStream out)` 和 `private void readObject(ObjectInputStream in)` 来允许开发人员自定义序列化和反序列化的具体行为[^1]。通过重写这两个方法,可以实现对序列化和反序列化的过程进行完全控制。 下面是一个简单的例子展示如何为一个包含 `String` 字段的对象添加自定义的日志功能: ```java import java.io.*; public class CustomSerializable implements Serializable { private static final long serialVersionUID = 1L; private String data; public CustomSerializable(String data) { this.data = data; } private void writeObject(ObjectOutputStream oos) throws IOException { System.out.println("Custom serialization of the object."); oos.defaultWriteObject(); // 调用默认的序列化机制 } private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException { System.out.println("Custom deserialization of the object."); ois.defaultReadObject(); // 调用默认的反序列化机制 } } ``` 在这个例子中,当对象被序列化时会打印一条消息表明正在执行自定义的序列化;同样地,反序列化也会触发相应的日志输出。 #### JSON 格式的字符串反序列化 除了二进制形式的序列化外,JSON 是另一种常见的数据交换格式。对于基于 JSON 的字符串反序列化,可以借助第三方库来完成复杂的转换工作。例如,使用 Jackson 或 Gson 库可以从 JSON 字符串恢复成对应的 Java 对象实例[^5]。 这里给出利用 Jackson 实现的一个基本示例: ```java import com.fasterxml.jackson.databind.ObjectMapper; public class JsonDeserializationExample { public static void main(String[] args) throws Exception { ObjectMapper mapper = new ObjectMapper(); // 假设这是来自网络或其他地方接收到的 JSON 数据 String jsonString = "{\"name\":\"John\", \"age\":30}"; // 将 JSON 字符串映射回 User 类型的对象 User user = mapper.readValue(jsonString, User.class); System.out.println(user.getName() + ", " + user.getAge()); } } class User { private String name; private int age; // Getters and Setters (省略) @Override public String toString() { return "User{name='" + name + "', age=" + age + "}"; } } ``` 此代码片段展示了如何将 JSON 格式的字符串解析并转化为具体的业务实体类 `User`。 #### 处理复杂类型的序列化与反序列化 有时我们需要保存的数据结构更加复杂,比如嵌套列表、数组或者是第三方库提供的类型(像 NumPy 数组等)。在这种情形下,标准的 Java 序列化机制可能不足以满足需求[^3]。此时可以选择采用特定于应用领域内的解决方案,或是依赖成熟的开源项目所提供的扩展支持。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值