IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 使用jackson的@JsonProperty()进行字段修改成自己想要的,并实现json字符串和list集合相互转换 -> 正文阅读

[开发测试]使用jackson的@JsonProperty()进行字段修改成自己想要的,并实现json字符串和list集合相互转换

一、前言

小编今天遇到一个需求,是一个表中有个字段是存放json字符串的,为了减少json字符串的长度,我们里面的实体类字段存储使用第一个字母来,这样数据库的字段大小就可以节省很多。

通俗的说一下哈:
就是实体类上的名字为model、data、time,我们在保存到json字符串中为m、d、t
别着急,小编接着解释需求哈!!

二、转化前后展示

原来的这样,比较占字段!

[{
  "username": "wang",
  "password": "123"
}]

优化后:

[{
  "u": "wang",
  "p": "123"
}]

现在大家明白了吧!!

小编使用jackson的@JsonProperty()来解决这个问题,使用之后,带来了json字符串和list集合要相互转化,因为要新增和修改!

三、@JsonProperty()使用

@JsonProperty()作用:在序列号和反序列化时使用,作用于实体类的属性上,作用是把该属性的名称序列化成自己想要的名称。

json实体类:

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

@Data
public class Json {

    @JsonProperty("u")
    private String username;
    @JsonProperty("p")
    private String password;
}

保存数据库的实体类:

@Data
public class Test implements Serializable {
    private static final long serialVersionUID = 337361630075002456L;

    @TableId(type= IdType.ASSIGN_ID)
    private long id;

    private String name;

    private String gender;
    
    private String data;
    
    private LocalDateTime createDate;

    private LocalDateTime updateDate;

}

下面我们转json就可以保存到数据库了,转json的时候就会按照我们写的u和p进行保存的!

四、json字符串和list集合相互转化

小编为了省事直接在controller进行测试了哈!!

@RestController
@RequestMapping("/test")
@Slf4j
@RequiredArgsConstructor
public class TestController {

    private final TestService testService;

    @NonNull
    private TestMapper testMapper;
	@GetMapping("/update")
    public Result update() throws JsonProcessingException {

        List<Json> jsonList = new ArrayList<>();
        Json json = new Json();
        json.setPassword("123");
        json.setUsername("wang");
        jsonList.add(json);
        Json json1 = new Json();
        json1.setPassword("456");
        json1.setUsername("zhang");
        jsonList.add(json1);
        // list转json
        String jsonString = new ObjectMapper().writeValueAsString(jsonList);
        Test test = new Test();
        test.setName("小米");
        test.setId(100);
        test.setData(jsonString);
        testMapper.insert(test);
		
		// json 转 list
        List<Json> list = new ObjectMapper().readValue(jsonString, new TypeReference<List<Json>>() {
        });
        System.out.println(list);

        return Result.success("成功");
    }
}

如果对@RequiredArgsConstructor不了解的可以看一下小编的这篇文章!@RequiredArgsConstructor代替@Autowrired

五、测试展示

下图可以看到我们在保存到数据库的时候,转完json后已经是u和p了
我们在把json字符串转list集合时,他自动帮我们转化为实体类本来的样子了!是不是干净又卫生哈!!
不过使用会有异常,我们可以try catch就可以了!!
在这里插入图片描述
我们在看一下数据库里保存的:

在这里插入图片描述

六、总结

铛铛铛!!测试终于结束,恭喜大家学到新东西,本来会的就赶紧关掉页面!小编灰溜溜的跑路了!总之分享小知识给大家还是挺开心的!!如果感觉有用,不妨点个关注,我们来日方长哈!!


有缘人才可以看得到的哦!!!

点击访问!小编自己的网站,里面也是有很多好的文章哦!

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-05-07 11:26:12  更:2022-05-07 11:26:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 16:19:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码