我有一个Map<String,Object>
需要在JSON中进行序列化和反序列化。由于它需要存储在db中,有时我无法使用byte[]
。我熟悉Gson
。但问题是当Map有没有反序列化的POJO回到它们各自的形式时。
考虑以下地图
Map<String,Object> data = new HashMap<>();
Car car = new Car(1);
car.setHeight(2);
car.setWeight(3);
data.put("car",car);
Bike bike = new Bike(4);
bike.setType("Sports");
bike.setColour("Red");
data.put("bike",bike);
List<Truck> trucks = new LinkedList<>();
trucks.add(new Truck(5));
trucks.add(new Truck(6));
data.put("trucks",trucks);
现在将此地图转换为JSON会产生类似这样的内容
{
"car":{
"id":1,
"height":2,
"weight":3
},
"bike":{
"id":4,
"type":"Sports",
"color":"Red"
},
"trucks":[
{
"id":5
},{
"id":6
}
]
}
转换回POJO时
它导致LinkedHashMap
而不是他们各自的POJO
如何解决此问题。
答案 0 :(得分:0)
这是不可能的,因为你花了Map<String, Object>
并且转换器不知道Object
中Map
的类型,所以很明显它会返回{{1} }。您可以做的是取LinkedHashMap
创建代表您Map
的专用课程。
JSON