转换地图 到JSON并返回Map
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转换地图 到JSON并返回Map相关的知识,希望对你有一定的参考价值。
我有一个需要在JSON中序列化和反序列化的Map<String,Object>
。因为它需要存储在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>
和转换器不知道Object
中Map
的类型,所以很明显,它将返回LinkedHashMap
。你可以做的是宁愿采取Map
创建代表你的JSON
的专用类。
public class Holder{
private Car car;
private Bike bike;
private List<Truck> trucks;
//getter-setter
}
以上是关于转换地图 到JSON并返回Map的主要内容,如果未能解决你的问题,请参考以下文章
如何将活动 UI 的点击传递到地图片段以将地图更改为 MAP_TYPE_HYBRID
如何使用带有 json 的 Map 从数据库中设置地图 latlng 值?