[英]convert Map<String,Object> to JSON and back to Map
I have a Map<String,Object>
that needs to serialise and deserialise in JSON. 我有一个Map<String,Object>
,需要在JSON中序列化和反序列化。 As it requires to be stored in db sometimes I cannot use byte[]
. 因为它需要存储在db中,所以有时我不能使用byte[]
。 I am familiar with Gson
. 我对Gson
很熟悉。 But the problem is when the Map has POJOs that are not deserialised back to their respective forms. 但是问题是当Map的POJO没有反序列化回其各自的形式时。
Consider the below map 考虑下面的地图
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);
Now converting this map to JSON would result in something like this 现在将此地图转换为JSON将导致如下所示
{
"car":{
"id":1,
"height":2,
"weight":3
},
"bike":{
"id":4,
"type":"Sports",
"color":"Red"
},
"trucks":[
{
"id":5
},{
"id":6
}
]
}
When converting back to POJO it results in a LinkedHashMap
instead of their Respective POJOs 转换回POJO时,将生成LinkedHashMap
而不是其各自的POJO
How do I solve this problem. 我该如何解决这个问题。
Its not possible because you took Map<String, Object>
and converter don't know the type of Object
in Map
so its obvious that it'll return LinkedHashMap
. 这是不可能的,因为您使用了Map<String, Object>
并且转换器不知道Map
中Object
的类型,因此很明显它将返回LinkedHashMap
。 What you can do is rather taking Map
create dedicated class that represents your JSON
. 您可以做的就是让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.