gpt4 book ai didi

java - 将 Map 转换为 JSON 并返回 Map

转载 作者:太空宇宙 更新时间:2023-11-04 10:49:38 24 4
gpt4 key购买 nike

我有一个Map<String,Object>需要在 JSON 中进行序列化和反序列化。由于它需要存储在数据库中,有时我无法使用 byte[] 。我熟悉Gson 。但问题是当 Map 中的 POJO 没有反序列化回各自的形式时。

考虑下面的 map

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
}

关于java - 将 Map<String,Object> 转换为 JSON 并返回 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47976777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com