我需要使用Jackson库来解析具有特定字段"baz"
的JSON对象,该字段具有两种结构的对象值。要么我属于这种情况:
{
"foo": "...",
"bar": "...",
"baz": {
"bazAttribute1": "...",
"bazAttribute2": "...",
"bazAttribute3": "..."
}
}
或者我属于另一种情况:
{
"foo": "...",
"bar": "...",
"baz": {
"bazAltAttribute1": "...",
"bazAltAttribute2": "...",
}
}
显然,baz
子对象有一个结构(在示例中,三个属性)或另一个(两个名称完全不同的属性)。
我在整个项目中使用Jackson的方式是自动编组到类,所以我通常会打电话:
ObjectMapper mapper = new ObjectMapper()
mapper.readValue(myJsonString, FooBarBaz.class)
如何设计表示存在这种双重结构的根对象的FooBarBaz类?
我正在考虑使用泛型,或者我可以让两个子对象实现一个公共接口,并在FooBarBaz
中使用该接口来描述baz
?
我对采取何种方法使其不太费解而感到有点困惑。
答案 0 :(得分:0)
试试这个。如果您的JSON字符串不包含所有这些变量,则其他变量将为null。
class FooBarBaz {
private String foo;
private String bar;
private Baz baz;
//Getter & Setter methods
}
class Baz {
private String bazAttribute1;
private String bazAttribute2;
private String bazAttribute3;
}