jackson实现深拷贝
时间: 2023-11-09 10:19:39 浏览: 40
要在Java中实现深拷贝,你可以使用Jackson库来序列化和反序列化对象。下面是一个示例代码,演示如何使用Jackson来实现深拷贝:
```java
import com.fasterxml.jackson.databind.ObjectMapper;
public class DeepCopyExample {
public static void main(String[] args) {
// 创建一个要进行深拷贝的对象
Person originalPerson = new Person("John", 25);
try {
// 创建ObjectMapper对象
ObjectMapper objectMapper = new ObjectMapper();
// 将原始对象转换为JSON字符串
String jsonString = objectMapper.writeValueAsString(originalPerson);
// 将JSON字符串转换回新的Person对象,实现深拷贝
Person clonedPerson = objectMapper.readValue(jsonString, Person.class);
// 修改原始对象的属性值
originalPerson.setName("Mike");
originalPerson.setAge(30);
// 打印两个对象的属性值
System.out.println("Original Person: " + originalPerson); System.out.println("Cloned Person: " + clonedPerson);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
```
在上述示例代码中,我们首先创建一个名为`Person`的简单Java类。然后,我们使用Jackson库的`ObjectMapper`类来进行序列化和反序列化操作。通过将原始对象转换为JSON字符串,然后再将JSON字符串转换回新的对象,我们实现了深拷贝。
最后,我们修改了原始对象的属性值,并打印了原始对象和克隆对象的属性值。你会发现克隆对象的属性值没有被修改,这表明深拷贝已成功实现。
希望这个例子可以帮助到你!如果你有任何其他问题,请随时问。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)