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

简介: 使用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就可以了!!我们在看一下数据库里保存的:


六、总结

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

相关文章
|
17小时前
|
存储 JSON 数据处理
从JSON数据到Pandas DataFrame:如何解析出所需字段
从JSON数据到Pandas DataFrame:如何解析出所需字段
11 1
|
17小时前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
7 0
|
17小时前
|
JSON 数据格式
使用 Gson 将 Map、List等转换为json string
使用 Gson 将 Map、List等转换为json string
12 0
|
17小时前
|
SQL DataWorks 关系型数据库
DataWorks操作报错合集之DataWorks在同步mysql时报错Code:[Framework-02],mysql里面有个json类型字段,是什么原因导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
30 0
|
17小时前
|
分布式计算 DataWorks 关系型数据库
DataWorks产品使用合集之在DataWorks中,使用JSON解析函数将MySQL表中的字段解析成多个字段将这些字段写入到ODPS(MaxCompute)中如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
28 3
|
17小时前
|
存储 JSON DataWorks
DataWorks产品使用合集之DataWorks将 MongoDB 中的数组类型写入到 DataWorks 的单个字段时,表示为字符串格式而非 JSON 格式如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
26 3
|
17小时前
|
JSON 分布式计算 大数据
MaxCompute产品使用合集之大数据计算MaxCompute 要提取JSON字符串中的所有key-value对,我该怎么操作
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
17小时前
|
前端开发
【专栏】在前端开发中,package.json 文件是项目的重要配置文件,其中包含了许多与项目相关的信息和设置
【4月更文挑战第29天】`package.json`的`proxy`字段用于配置开发环境中的代理服务器,解决跨域问题并模拟后端响应。它是字符串类型,值为代理服务器地址。主要应用场景包括前端跨域请求和本地调试。配置时在`package.json`顶层添加`proxy`字段,如`"proxy": "http://localhost:8080"`。该配置仅在开发环境中生效,生产环境需另寻解决方案。
|
17小时前
字符串和list互转
字符串和list互转
11 0
|
17小时前
list如何将自己实体的字段值赋给另外一个List实体中的相同字段
list如何将自己实体的字段值赋给另外一个List实体中的相同字段
8 0

热门文章

最新文章