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


六、总结

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

相关文章
|
2月前
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
65 5
|
1月前
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
43 0
|
2月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
159 0
在Java中处理JSON数据:Jackson与Gson库比较
|
2月前
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
29 3
|
2月前
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
345 7
|
3月前
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
26 3
|
4月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
45 5
|
6月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
1015 1
|
5月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
|
5月前
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。