fastJson深拷贝
1、toJsonString时WriteClassName
2、如果有泛型则需要开启类型自动转换
比如:
package com.example.springbootdemo;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import lombok.Data;
import org.junit.jupiter.api.Test;/*** @author zhouwenjun* @version 2022/3/29*/
public class JsonTest {@Testpublic static void main(String[] args) {ClassA classA = new ClassA();Address address = new Address();address.setAddress("aaaa");ClassB<Address> classB = new ClassB<>();classB.setName("xxx");classB.setAddress(address);classA.setBase(classB);String jsonStr = JSON.toJSONString(classA);System.out.println(jsonStr);ClassA copy = JSON.parseObject(jsonStr, ClassA.class);// 丢失信息: {"base":{"name":"xxx"}}System.out.println(JSON.toJSONString(copy));String jsonStrWithClass = JSON.toJSONString(classA, SerializerFeature.WriteClassName);System.out.println(jsonStrWithClass);// 开启泛型自动转换ParserConfig.getGlobalInstance().addAccept("com.example.springbootdemo");ClassA rightCopy = JSON.parseObject(jsonStrWithClass, ClassA.class);// {"base":{"address":"yyy","name":"xxx"}}System.out.println(JSON.toJSONString(rightCopy));}@Datastatic class ClassA {Base base;}@Datastatic class Base {String name;}@Datastatic class ClassB <T> extends Base {T address;}@Datastatic class Address {String address;}
}
fastJson深拷贝相关推荐
- 基于java实现浅拷贝和深拷贝
目录 1.概念 2.浅拷贝 2.1.浅拷贝实战 3.深拷贝 3.1.嵌套 clone 方法 3.2.使用序列化流 3.3.使用开源工具类 1.概念 浅拷贝:在拷贝一个对象时,复制基本数据类型的成员变量 ...
- [设计模式] ------ 原型模式(浅拷贝和深拷贝)
原型模式 原型模式就是使用复制对象,创建出新的对象,并且不需要知道创建的细节(比如类的属性的赋值等等). 基本使用(浅拷贝) 常见的就是使用Object的clone方法.需要让类实现Cloneable ...
- 如何对一个对象进行深拷贝
前面说了如何对一个对象进行浅拷贝,本文来说下如何对一个对象进行深拷贝. 文章目录 概述 拷贝对象 方法一 构造函数 方法二 重载clone()方法 方法三 Apache Commons Lang序列化 ...
- java深拷贝的三种方式
问题:spring boot/JPA项目中,修改某个对象以后需要生成一个VO对象给客户端,数据库对应的POJO对象里有个Map类型的对象(名字叫para),这个对象的value又是个Map,我使用Ma ...
- Java 浅拷贝和深拷贝的理解和实现方式
https://www.cnblogs.com/shakinghead/p/7651502.html https://blog.csdn.net/huwentao_totti/article/deta ...
- map复制 java_java 复制Map对象(深拷贝与浅拷贝)
1.深拷贝与浅拷贝 浅拷贝:只复制对象的引用,两个引用仍然指向同一个对象,在内存中占用同一块内存: 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象: 换言之 ...
- 【面试】深拷贝与浅拷贝的实现原理
文章目录 前言 1. 什么是深拷贝与浅拷贝 2. 浅拷贝的实现原理 3. 深拷贝的实现原理 3.1 实现Cloneable接口 3.2 使用JSON字符串转换 3.3 集合实现深拷贝 总结 前言 深拷 ...
- Java Map 深拷贝方法
本文共测试三种拷贝方式: 转成 JSON 再转回来 使用 Apache 的序列化工具类 SerializationUtils 新建 Map 时将原 Map 传入构造方法 前两种是深拷贝,第三种是浅拷贝 ...
- Jackson、FastJson快速入门(整合SpringMVC)
目录 1. 什么是 JSON 2. JSON 语法规则 3. JSON 与 JS 对象的关系 4. JSON 和 JS 对象互转 5. Jackson-数据格式转换 1. 环境搭建 2. 对象转jso ...
最新文章
- MySQL57安装与设置
- THE DRAGON PRINCE BOOK 3
- 八城联动丨神策 2020 数据驱动用户大会「成都站」邀您面基!
- 关于c++中运算符重载
- CodeForces - 555A Case of Matryoshkas(思维)
- 阿里云ECS开放批量创建实例接口,实现弹性资源的创建
- JMeter中如何实现参数化(CSV)
- Winform导入文件
- 性能为王:选择模拟监控的10大理由!
- svn add后的数据如何取消-svn revert??--zz
- 如何编辑PDF文档中的文本呢?
- sketchup生成面域插件_适用于Revit / SketchUp / Rhino / ArchiCAD插件最新版
- python乌龟吃鱼
- deamon(守护进程)的实现
- Chrome浏览器安装失败
- 集群渲染和渲染农场是什么意思?跟云渲染有什么关系?
- AAAI2021 | 在手机上实现19FPS实时的YOLObile目标检测,准确率超高
- 全国大学生智能车竞赛2022年-智能汽车竞赛发展沙龙
- linux系统设置密钥登录
- linux安装Node.js(详细)Node.js安装教程