【发布时间】:2021-01-20 14:02:56
【问题描述】:
我对 Java 很陌生,我正在尝试使用 Jackson 反序列化 JSON,但在声明 Object/Variable 类型方面遇到了一些小问题。我将提供所有代码然后解释问题以便于理解。
我有一个具有所需类型值的枚举:
public enum IdentifierTypeValues {
Type1,
Type2,
Type3,
//Constructor and Getter of enum values
}
然后对于每个type,我有不同的类,它们将有不同的输入并执行完全不同类型的过程:
public class GenerateType1 {
private String name;
private String age;
//Getter and Setter
//Some required process based on these values
}
public class GenerateType2 {
private String address;
private String city;
private String country;
//Getter and Setter
//Some required process based on these values
}
public class GenerateType3 {
private String firstName;
private String lastName;
private String fullName;
//Getter and Setter
//Some required process based on these values
}
现在我为这些类型的类提供了一个包装类,它将基于enum 和typeInfo 值采用type。我希望 typeInfo 值是任何基于类的类型,如下所示:
public class TypeSyntax {
private IdentifierTypeValues indeitiferType;
private GenerateType1 / GenerateType2 / GenerateType3 identifierTypeValues;
//Here the identifierTypeValues can have the values for anytype
//How to declare a variable of any of these class type?
}
这是我的 JSON 将用于反序列化的类。我知道我可以添加这 3 种类型的包装类,并为此提供该包装类作为类型类。像这样的:
public class WrapperClass{
private GenerateType1 type1;
private GenerateType2 type2;
private GenerateType3 type3;
}
public class TypeSyntax{
private IdentifierTypeValues indeitiferType;
private WrapperClass identifierTypeValues;
//But using this approach will change my JSON structure which I do not want to do.
}
我的 JSON 结构是这样的,我想以同样的方式保持它。
{
"indeitiferType":"Type1",
"identifierTypeValues":{
"name":"Batman",
"age":"2008"
}
}
有没有办法可以声明多类型类的变量?或者通过保持 json 格式相同来处理这个问题的更好方法?我试过搜索,但我无法搜索到底是什么,所以任何帮助都会真正得到帮助。
【问题讨论】:
-
首先,
identifierType值出现了三个不同的大小写。 1)Type1作为枚举字段 2)type1作为枚举的附加字段,TYPE1在 Json 示例中。您真正需要使用哪个字段/值? -
@zforgo 感谢您的回复。对不起,我已经纠正了一些错字。实际上,
JSON中的identifierTypeValues可以是任何类型,即Type1、Type2或Type3我只是想确保JSON 中的值是根据各自的类提供的。如果Type1则年龄和姓名等。
标签: java class jackson deserialization variable-declaration