2016-03-31 16 views
2

オリジナルのフィールド名に@JsonProperty値のマップを作成する必要があります。
達成することは可能ですか?@JsonPropertyの元のフィールド名を取得することは可能ですか?

私のPOJOクラス:

public class Contact 
{ 
    @JsonProperty("first_name") 
    @JsonView(ContactViews.CommonFields.class) 
    private String firstName; 

    @JsonProperty("last_name") 
    @JsonView(ContactViews.CommonFields.class) 
    private String lastName; 

    public String getFirstName() 
    { 
     return firstName; 
    } 

    public void setFirstName(String firstName) 
    {  
     this.firstName = firstName; 
    } 

    public String getLastName() 
    { 
     return lastName; 
    } 

    public void setLastName(String lastName) 
    { 
     this.lastName = lastName; 
    } 
} 

私のようなマップが必要です。事前に

{"first_name":"firstName","last_name":"lastName"} 

感謝を...

+0

jsonPropertyの値をフィールド名の値にマップできるようにしたいのですが、それは正しいですか? – dambros

+0

@dambros:はい。 JsonPropertyとFieldNamesのマップ –

答えて

3

これは、あなたが探しているものを行う必要があります。

public static void main(String[] args) throws Exception { 

    Map<String, String> map = new HashMap<>(); 

    Field[] fields = Contact.class.getDeclaredFields(); 

    for (Field field : fields) { 
     if (field.isAnnotationPresent(JsonProperty.class)) { 
      String annotationValue = field.getAnnotation(JsonProperty.class).value(); 
      map.put(annotationValue, field.getName()); 
     } 
    } 
} 

連絡先クラスの使用一例として、出力マップは次のようになります。

{last_name=lastName, first_name=firstName} 

は、単に上記の出力は、単にmap.toString()ある心に留めておきます。 JSONにするには、必要に応じて地図を変換してください。

関連する問題