我有各种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;
}
}
所以基本上第二列可以是布尔值、字符串或复杂对象。第一列总是一个字符串。所以我不想为第一列写反序列化逻辑,我只想为第二列写反序列化逻辑,并将其反序列化为仅字符串,而下游使用者将在使用此字段之前负责将其转换为正确的类型。
暂无答案!
目前还没有任何答案,快来回答吧!