使用Gson库解析JSON消息到Java Pojo,同时将JSON映射到字符串字段

使用Gson库解析JSON消息到Java Pojo,同时将JSON映射到字符串字段,java,json,hibernate,gson,Java,Json,Hibernate,Gson,在持久化到PostgreSQL数据库之前,我使用Gson库将JSON消息解析为JavaPOJO。无法更改PostgreSQL数据库架构 POJO Message.java示例如下: @TypeDef(name = "jsonb", typeClass = JsonBinaryType.class) public class Message { @Column(nullable = false, columnDefinition = "jsonb"

在持久化到PostgreSQL数据库之前,我使用Gson库将JSON消息解析为JavaPOJO。无法更改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消息示例如下:

@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;

}
{
“消息ID”:“ae97d31b-c63e-42fd-b619-f3cdcb169f58”,
“messageDetail”:{
“计数”:5
},
“messageType”:“AdminUserSearch”
}
我想将messageDetail作为一个字符串来解析(保留)JSON对象。Gson失败了,因为它似乎认识到它是一个JSON对象,因此不允许我将其作为字符串保存。出于数据库集成的原因,我希望POJO上的此字段是字符串,而不是其他任何内容,例如
对象
JSONNode
映射

以下代码失败:

String messageString = gson.toJson(kafkaMessage);
JsonObject messageObject = gson.fromJson(messageString, JsonObject.class);
Message messagePojo = gson.fromJson(messageObject, Message.class);

你已经试过什么了?这能回答你的问题吗@MedElgarnaoui不是真的,OP可能正在寻找
@JsonAdapter
来注释
messageDetail
字段,以应用他们需要的类型适配器。