将Map <string,object>转换为JSON并返回Map

时间:2017-12-26 09:57:39

标签: java json gson

我有一个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

如何解决此问题。

1 个答案:

答案 0 :(得分:0)

这是不可能的,因为你花了Map<String, Object>并且转换器不知道ObjectMap的类型,所以很明显它会返回{{1} }。您可以做的是取LinkedHashMap创建代表您Map的专用课程。

JSON