java - 使用 Gson 库将 JSON 消息解析为 Java Pojo,同时将 JSON 映射到字符串字段
问题描述
在持久化到 PostgreSQL 数据库之前,我使用 Gson 库将 JSON 消息解析为 Java POJO。不能更改 PostgreSQL 数据库架构。
下面是一个 POJO Message.java 示例:
@TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
public class Message {
@Column(nullable = false, columnDefinition = "jsonb")
@Type(type = "jsonb")
private String messageDetail;
@Column(nullable = false)
private String messageType;
@Column(nullable = false, unique = true)
private String messageId;
}
下面是一个示例 JSON 消息:
{
"messageId": "ae97d31b-c63e-42fd-b619-f3cdcb169f58",
"messageDetail": {
"count": 5
},
"messageType":"AdminUserSearch"
}
我想要 messageDetail ,它是一个 JSON 对象,将被解析(保留)为字符串。Gson 失败了,因为它似乎认识到它是一个 JSON 对象,因此不允许我将其保留为字符串。出于数据库集成的原因,我希望我的 POJO 上的这个字段是一个字符串,而不是其他任何东西,例如Object
, JSONNode
, Map<String,Object>
。
以下代码失败:
String messageString = gson.toJson(kafkaMessage);
JsonObject messageObject = gson.fromJson(messageString, JsonObject.class);
Message messagePojo = gson.fromJson(messageObject, Message.class);
解决方案
推荐阅读
- php - Symfony 3.3.18:作曲家更新/安装/需要火 => 内存不足
- r - 在 R-markdown 中保持表格位置
- python - Pytorch 量化运行时错误:尝试创建具有负维度的张量
- gcc - 为什么 GCC 会自己编译 3 次?
- python - 在相等的列值上切片熊猫数据框
- flutter - 如何在 ListView 中将项目居中
- python - 从单元测试 Python 解析 XML 文件
- matlab - 如何克服这个错误?试图访问 U(2,0);索引必须是正整数或逻辑
- javascript - C# - 在 .Net Core 中重新应用对 JS 对象的操作
- delphi - 使用来自 Yubico 的 fido2.dll 进行 Webauthn 凭证验证