我正在创建一个具有以下结构的Spring JPA项目:
public class Pipeline {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
private SourceConfig sourceConfig;
private SinkConfig sinkConfig;
...
...
}
public abstract class SourceConfig {
private long id;
private String name;
}
public abstract class SinkConfig {
private long id;
private String name;
}
public KafkaSourceConfig extends SourceConfig {
private String topic;
private String messageSchema;
}
public MysqlSourceConfig extends SourceConfig {
private String databaseName;
private String tableName;
}
现在,当客户端传递下面的JSON时,程序如何知道要将哪个SourceConfig子类添加到Pipeline对象?
{
"name": "mysql_to_bq_1",
"sourceConfig": {
"source": "MYSQL",
},
"sinkConfig": {
},
"createdBy": "paul"
}
2条答案
按热度按时间unftdfkk1#
您需要指定要使用的类类型,如下所示。因此,不要使用
使用了
或者你可以保持它像你有,但万一你想使用一些属性的子类,你必须把它转换成该类类型。
例如:
它可以如下所示
kqqjbcuj2#
我四处看了一下,了解了Jackson支持的Polymorphic Deserialization,。
Deserialize JSON with Jackson into Polymorphic Types - A Complete Example is giving me a compile error
实际上,我们必须从某个字段推断出所提供的JSON中引用了哪个子类。
例如,
这应该调用MysqlSourceConfig的构造函数。因此下面的代码完成了这项工作。