繁体   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