如何根据JSON对象的字段值从JSON对象创建特定Java类的对象?

时间:2018-04-14 14:39:42

标签: java json jackson gson deserialization

我试图从JSON文件反序列化对象。 我有抽象类Car,它由MinibusMinivan类扩展。 我按maxPassengerstrunkSize字段的值确定了确切的类别。

当我根据JSON中的参数反序列化时,我需要创建一个MinibusCarMinivanCar对象。最有效的方法是什么?请指教。

1 个答案:

答案 0 :(得分:0)

这里没有足够的信息。你能告诉我们这个json文件的例子吗?

一般情况下,你可以使用杰克逊包:

    // 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示例文件。

祝你好运!