提问者:小点点

如何获取所有Jackson/JAXB注释的属性值?


给定一个带有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)指定的顺序。我想知道是否有更聪明的方法(也许使用某种适配器?)


共1个答案

匿名用户

最后,列顺序变得很重要,所以我用以下方式注释了每个模型类:

@JsonProperty tyorder({"最大调节值","另一个字段",…})

…然后写了一个方法来遍历这些(使用反射)子模型(实际上是固定的)。