gson自定义反序列化程序,用于特定的字符串字段

hivapdat  于 2021-06-26  发布在  Java
关注(0)|答案(0)|浏览(218)

我有各种json文件(模式略有不同)在kinesis上流动。他们的模式非常复杂。它们是用户的原始点击,其模式非常复杂。我想创建一个pojo来表示所有的底层消息(spark通过创建一个模式在内部完成的事情)。我试图使用gson库,但实现这一点的唯一方法是,编写一个自定义反序列化程序,在这种情况下,我将为这些json中的所有字段编写反序列化逻辑。有没有什么方法可以只覆盖几个字段的反序列化,而其余字段仍然可以由gson作为默认方式反序列化?

JSON-1
{
   "first_col":"abc",
   "second_col":false
}

JSON-2
{
   "first_col":"abc",
   "second_col":"false-String"
}

JSON-3
{
   "first_col":"abc",
   "second_col":{
      "col1":"xyz",
      "col2":123
   }
}

普通pojo

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class Example {

private String firstCol;

private String secondCol;

public String getFirstCol() {
return firstCol;
}

public void setFirstCol(String firstCol) {
this.firstCol = firstCol;
}

public Boolean getSecondCol() {
return secondCol;
}

public void setSecondCol(String secondCol) {
this.secondCol = secondCol;
}

}

所以基本上第二列可以是布尔值、字符串或复杂对象。第一列总是一个字符串。所以我不想为第一列写反序列化逻辑,我只想为第二列写反序列化逻辑,并将其反序列化为仅字符串,而下游使用者将在使用此字段之前负责将其转换为正确的类型。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题