我正在尝试从 JSON 文件反序列化对象。
我有抽象类 Car
,它由 Minibus
和 Minivan
类扩展。
我通过 maxPassengers
和 trunkSize
字段的值确定确切的类别。
当我根据 JSON 中的参数反序列化时,我需要创建一个 MinibusCar
或 MinivanCar
对象。最有效的方法是什么?请指教。
最佳答案
此处没有足够的信息。您能给我们展示这个 json 文件的示例吗?
一般情况下,您可以使用 Jackson 包:
// Serialize into JSONObject
JSONObject json = (JSONObject) JSONSerializer.toJSON(jsonTxt);
// Get your value from it, for example:
int maxPassengers = json.get("maxPassengers");
// Init your object mapper
ObjectMapper mapper = new ObjectMapper();
// Based on this value, create your object
Car car; // Using polymorphism (you can also read about Factory design pattern)
if (maxPassengers > 10){
car = mapper.readValue(jsonTxt, MinibusCar.class);
} else {
car = mapper.readValue(jsonTxt, MinivanCar.class);
}
但是,在您向我们展示类(其中三个)和一些 json 示例文件之前,这个解决方案并不完美。
祝你好运!
关于java - 如何根据 JSON 对象的字段值创建特定 Java 类的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49832609/