我正在将我的 Quarkus 应用程序从使用 Json-B 迁移到 Jackson。现在我对 Jackson 和 Json-B 序列化 Map 的方式有所不同,其中 key 是一些 Java 对象。
传输对象示例:
public class Car {
private Integer id;
private String color;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
我的资源示例:
@GET
@Path("/test")
public Map<Car, String> test() {
Car car = new Car();
car.setId(1);
car.setColor("Red");
Map<Car, String> map = new HashMap<>();
map.put(car, "First");
return map;
}
Jackson 的序列化结果是(仅使用 toString() 来序列化 Car 对象:
{
"com.example.app.dto.Car@42773f1c": "First"
}
使用Json-B序列化的结果是:
[
{
"key": {
"color": "Red",
"id": 1
},
"value": "First"
}
]
是否有任何 Jackson 配置可以实现与 Json-B 提供的 Jackson 相同的结果,并且映射以键作为对象? 我可以使用自定义序列化器针对这个特定情况实现它,但我需要一个通用的解决方案。