是否可以获取到@JsonProperty 的原始字段名?
Is it possible to get the original field names of @JsonProperty?
我需要创建一个@JsonProperty 值到原始字段名称的映射。
是否可以实现?
我的 POJO class:
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"}
提前致谢...
这应该能满足您的需求:
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());
}
}
}
以您的联系人 class 为例,输出映射将是:
{last_name=lastName, first_name=firstName}
请记住上面的输出只是一个 map.toString()
。要成为 JSON,只需将地图转换为您的需要即可。
我需要创建一个@JsonProperty 值到原始字段名称的映射。
是否可以实现?
我的 POJO class:
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"}
提前致谢...
这应该能满足您的需求:
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());
}
}
}
以您的联系人 class 为例,输出映射将是:
{last_name=lastName, first_name=firstName}
请记住上面的输出只是一个 map.toString()
。要成为 JSON,只需将地图转换为您的需要即可。