2013-11-22 66 views
0

鉴于与杰克逊注解的实体(模型)类,用于设置列名:如何获取所有Jackson/JAXB注释的属性值?

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(名称= “最大调节值”)

我需要一个getGridColumns方法将返回一个JSON结构,从这个模型+其子模型提取的所有列名(所以这里将返回“最大规定值”,并从FareModel所有@JsonProperty值。)

问题是如何最好地解决这个问题?已经使用反射进行了讨论,例如像method.getAnnotation(JsonProperty.class).value()),但不知道这是否会起作用,看起来并不理想。首先,它不会遵守@JsonPropertyOrder(或JAXB中的propOrder)指定的顺序。我想知道如果有一个更聪明的方式(?也许使用某种适配器)

回答

0

最后,列顺序竟然是重要的,所以我标注了每个模型类:

@JsonPropertyOrder({ “最大调节值”, “另一场”, ...})

...然后写的方法通过这些(使用反射环路)+子模型(这实际上是固定的)。