![](/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.