![](/img/trans.png)
[英]Java Map<String, Map<String, Object>> convert to String and back
[英]convert Map<String,Object> to JSON and back to Map
我有一个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
我该如何解决这个问题。
这是不可能的,因为您使用了Map<String, Object>
并且转换器不知道Map
中Object
的类型,因此很明显它将返回LinkedHashMap
。 您可以做的就是让Map
创建表示您的JSON
专用类。
public class Holder{
private Car car;
private Bike bike;
private List<Truck> trucks;
//getter-setter
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.