gpt4 book ai didi

mysql - jdbcTemplate - 从 JSON 列转换数据

转载 作者:行者123 更新时间:2023-11-29 16:15:29 27 4
gpt4 key购买 nike

工具:Spring Boot v2.1.3.RELEASE、MySQL 5.7

我有一个表,其中包含名为“properties”的 JSON 类型列。我使用 jdbcTemplate.queryForList(sql) 方法从此表中读取。Rest 服务返回如下内容:

[
{
"id": 1,
"name": "users",
"properties": "{\"prop1\": \"value1\"}",
"description": "smpl descr1",
"log_enabled": false
},
{
"id": 2,
"name": "members",
"properties": null,
"description": "sample description 2",
"log_enabled": true
}
]

如您所见,“属性”对象是字符串类型。如何强制 jdbcTemplete 将 JSON 列中的数据转换为 JSON 而不是字符串?

预期结果:

[
{
"id": 1,
"name": "users",
"properties": {
"prop1": "value1"
},
"description": "smpl descr1",
"log_enabled": false
},
{
"id": 2,
"name": "members",
"properties": null,
"description": "sample description 2",
"log_enabled": true
}
]

最佳答案

很抱歉,JdbcTemplete没有这样的功能。您必须使用您最喜欢的 JSON 库自行将 JSON 字符串转换为 java 对象。

例如,对于 Jackson ,您可以使用以下方法将任何 JSON 字符串转换为 Map:

ObjectMapper mapper = new ObjectMapper();
String json = "{\"prop1\": \"value1\" , \"prop2\": 123}";

Map<String,Object> result = mapper.readValue(json,new TypeReference<Map<String,Object>>() {});

result.get("prop1") // "value1"
result.get("prop2") // 123

关于mysql - jdbcTemplate - 从 JSON 列转换数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54843417/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com