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

标签 java json jackson gson deserialization

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

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

最佳答案

此处没有足够的信息。您能给我们展示这个 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/

相关文章:

javascript - 将动态生成的对象数组传递给 onclick 处理程序

javascript - 如何动态遍历 JSON 数据并进行更改..?

hibernate - 如何使用 spring 将 postgres jsonb 列反序列化为对象列表?

java - 参数顺序与 @XmlType(propOrder) 和 Resteasy jackson

java - 如何使用数字形字符串创建枚举类

java - 如何将 LinkedTreeMap 转换为 gson JsonObject

java - 是否热衷于让 jackson 在 Spring Boot REST API 中按需使用 snake_case/camelCase?

android - Jersey 客户端需要 Android 中缺少的 XMLInputFactory

java - Gradle 多项目 - 在 "clean"之前为每个 java 库项目应用 "jar"任务

java - 如何取消延迟的 FileInputStream 文件打开