首页 > 解决方案 > 使用 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);

标签: javajsonhibernategson

解决方案


推荐阅读