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

时间:2013-11-22 09:06:59

标签: java json reflection jaxb annotations

给定一个带有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 =&#34; Max Regulated Value&#34;)。

我需要一个getGridColumns方法,它将返回一个JSON结构,其中包含从此模型及其子模型中提取的所有列名称(因此,它将返回&#34; Max Regulated Value&#34;以及所有{{ 1}}来自@JsonProperty的值。)

问题是如何最好地接近这个?使用反射,例如,像FareModel这样的东西但不确定这是否会起作用并且它看起来并不理想。首先,它不会尊重method.getAnnotation(JsonProperty.class).value())(或JAXB中的@JsonPropertyOrder)指定的顺序。我想知道是否有更聪明的方法(也许使用某种适配器?)

1 个答案:

答案 0 :(得分:0)

最后,列顺序变得很重要,所以我用:

注释每个模型类

@JsonPropertyOrder({     “最大监管价值”,     “另一个领域”,     ......})

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