【问题标题】:How to create an object of specific Java class from JSON object depending on it's fields values?如何根据其字段值从 JSON 对象创建特定 Java 类的对象?
【发布时间】:2018-04-14 14:39:41
【问题描述】:
我正在尝试从 JSON 文件中反序列化对象。
我有抽象类Car,它由Minibus 和Minivan 类扩展。
我通过 maxPassengers 和 trunkSize 字段的值确定确切的类。
当我根据 JSON 中的参数进行反序列化时,我需要创建一个 MinibusCar 或 MinivanCar 对象。最有效的方法是什么?请指教。
【问题讨论】:
标签:
java
json
jackson
gson
deserialization
【解决方案1】:
这里没有足够的信息。你能给我们看一个这个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 示例文件之前,此解决方案并不完美。
祝你好运!