2016-03-31 2 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, просто преобразуйте карту в соответствии с вашими потребностями.

 Смежные вопросы

  • Нет связанных вопросов^_^