【发布时间】:2017-06-23 02:04:36
【问题描述】:
我有一个哈希映射Map<String, String>,它具有以下值,请注意点表示层次结构:
+--------------------+-----------+
| Key | Value |
+--------------------+-----------+
| car.color | blue |
| car.engine.make | mitsubishi|
| car.engine.power | 120 |
+--------------------+-----------+
我有 pojo 课程:
public class Vehicle {
private Car car;
**Setters and Getters Below*
}
public class Car {
private String color;
private Engine engine;
**Setters and Getters Below*
}
public class Engine {
private String make;
private Integer power;
**Setters and Getters Below**
}
有什么方法可以根据层次结构将 HashMap 映射到 POJO 类中?我尝试使用 jackson ObjectMapper mapper = new ObjectMapper();,但它似乎能够映射 1 级对象。
【问题讨论】:
-
您是否试图避免手动构建对象?
-
是的,我可以通过使用 switch case 来做到这一点,就像
case "car.engine.make" then set it in the object一样,但是如果我在地图中有很多价值,开关代码会变得很长 -
没有切换案例,您只需构建一次映射类,直接通过字符串请求并将它们转储到正确的位置。除非您在地图中谈论超过 200 个字符串,否则这很可能是最有效的方法?另一方面,用hasmap以外的东西表示数据以更好地维护结构不是更好吗?或者这是不可能的?
-
对于映射类,你有什么我可以参考的 URL,比如大致的方法吗?是的,不可能改变数据结构,它必须像我提到的那样。
-
我将添加一个我为此示例编写的快速解决方案作为答案。