:ジャクソンでエンティティ継承を使用してフィールドを埋め込む方法は?私は抽象クラスをextenting二つのクラスがある場合
public abstract class Vehicle {
private String model;
}
public class Car extends Vehicle {
private int seatingCapacity;
private double topSpeed;
}
public class Truck extends Vehicle {
private double payloadCapacity;
}
を私はジャクソン(春・ブート)を使用してJSONのデータをシリアル化したいと思います。デフォルトJSONによって は次のようになります。
[
{"model": "vw", "type": "car", "seatingCapacity": 5, ...},
{"model": "volvo", "type": "truck", "payloadCapacity": 10, ...},
...
]
しかし、APIのため、私は、各サブクラスのための特定のフィールドは、クラス型の中に含めることがあることが必要です。
[
{
"model": "vw",
"type": "car",
"car": {"seatingCapacity": 5, ...}
},
{
"model": "volvo",
"type": "truck",
"truck": {"payloadCapacity": 10, ...}
},
...
]
回避策は、サブクラスでfiedがそれぞれのパスで 'JsonProperty' @を追加することです。何かのように: '@JsonProperty(value =" car.seatingCapacity ")'。しかし、それは "car"の代わりに "car.seatingCapacity"キーを生成します:{"seatingCapacity":n} – user2813807