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


六、总结

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

相关文章
|
11天前
|
JSON Java 数据格式
springboot中表字段映射中设置JSON格式字段映射
springboot中表字段映射中设置JSON格式字段映射
22 1
|
2月前
|
XML JSON 前端开发
json字符串CSS格式化
完成以上步骤后,你便能在网页中看到格式化后的JSON数据,它们将按照CSS定义的样式进行展示,使数据更易于阅读和理解。通过有效地结合JSON和CSS,你可以创建出更加丰富且易于交互的网页内容。
191 64
|
1月前
|
JSON API 数据格式
postman如何发送json请求其中file字段是一个图片
postman如何发送json请求其中file字段是一个图片
116 4
|
1月前
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
194 7
|
2月前
|
XML JSON 前端开发
json字符串CSS格式化
json字符串CSS格式化
57 4
|
2月前
|
JSON 数据格式 Python
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
|
2月前
|
JSON 数据库 数据格式
数据库表如果有json字段,该怎么更新
数据库表如果有json字段,该怎么更新
|
24天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
10天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
14天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。

热门文章

最新文章