我有以下json数据作为数据库的响应,我需要映射到我的Java Pojo。
{
"Vehicle" {
"travelMedium" : "road",
"CarList" : {
"car": [
{
"company": "Maruthi",
"color" : "red"
},
{
"company": "Honda",
"color" : "black"
},
{
"company": "Swift",
"color" : "white"
}
]
}
}
}
Class Vehicle {
String travelMedium;
List<Car> car;
}
Class Car {
private company;
private color;
}
我正在使用Jackson进行这种反序列化,它将json绑定到Java对象,但附加 字段CarList给出错误。我希望避免绑定时的“CarList”字段(json字符串到Java Pojo)。
我想知道实现这一目标的方法。或者任何建议都会很棒。
答案 0 :(得分:2)
也许它不那么干净。但是如果你想避免在你的pojo中使用这个carList
字段,你可以这样做:
您可以提供setter方法并设置实际需要的字段。
@JsonProperty("carList")
public void setCarList(Map<String, List<Car>> cars) {
this.car = cars.get("carList");
}
答案 1 :(得分:0)
您实际上不想忽略CarList
字段,而是想自动“展开”它。
您可能需要一个包装类:
public class CarList {
private final List<Car> car;
@JsonCreator
public CarList(@JsonProperty("car") List<Car> car) {
this.car = car == null ? Collections.emptyList() : Collection.unmodifiableList(car);
}
...
}
然后
public class Vehicle {
private final String travelMedium;
private final List<Car> car;
@JsonCreator
public CarList(@JsonProperty("travelMedium") String travelMedium,
@JsonProperty("CarList") CarList carList) {
this.travelMedium = travelMedium;
this.car = carList == null ? Collections.emptyList() : Collection.unmodifiableList(carList.getCar());
}
...
}