【问题标题】: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,它由MinibusMinivan 类扩展。 我通过 maxPassengerstrunkSize 字段的值确定确切的类。

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

【问题讨论】:

    标签: 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 示例文件之前,此解决方案并不完美。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-14
      相关资源
      最近更新 更多