簡體   English   中英

轉換地圖 <String,Object> 到JSON並返回到Map

[英]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>並且轉換器不知道MapObject的類型,因此很明顯它將返回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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM