给定一个带有Jackson注释的实体(模型)类来设置列名:
public class GridRowModel {
private Long maxRegulatedValue;
@JsonProperty(value="Max Regulated Value")
public Long getMaxRegulatedValue() {
return maxRegulatedValue;
}
@JsonProperty(value="Fares")
public Map<String, FareModel> getFares() {
return fares;
}
...
(也可以使用JAXB注释——例如@XmlElement(name="Max监管值")。
我需要一个getGridColumns
方法,它将返回一个JSON结构,其中包含从该模型及其子模型中提取的所有列名(因此,这里它将返回最大调节值和来自FareModel
的所有@JsonProperty
值。)
问题是如何最好地解决这个问题?已经提出使用反射,例如像method. getAnnotion(JsonProperty.class).value())
这样的东西,但不确定这是否可行,而且看起来并不理想。首先,它不尊重@JsonProperty tyOrder
(或JAXB中的proOrder
)指定的顺序。我想知道是否有更聪明的方法(也许使用某种适配器?)
最后,列顺序变得很重要,所以我用以下方式注释了每个模型类:
@JsonProperty tyorder({"最大调节值","另一个字段",…})
…然后写了一个方法来遍历这些(使用反射)子模型(实际上是固定的)。