gpt4 book ai didi

java - 类字段上的 @JsonProperty - 获取 JSON 中的重复字段

转载 作者:行者123 更新时间:2023-12-01 21:08:22 25 4
gpt4 key购买 nike

我有一个学生类(class),有一些字段。我想为返回的 JSON 字段提供自定义名称。

public class Student {


@JsonProperty("name")
private String mName;

@JsonProperty("DOB")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
private Date mBirthDate;

@JsonProperty("SSN")
private String mSocialSecurityNumber;

public Student() {
}

public Student(String mName, Date mBirthDate, String mSocialSecurityNumber) {
this.mName = mName;
this.mBirthDate = mBirthDate;
this.mSocialSecurityNumber = mSocialSecurityNumber;
}


public String getName() {
return mName;
}

public void setName(String mName) {
this.mName = mName;
}

public Date getBirthDate() {
return mBirthDate;
}

public void setBirthDate(Date mBirthDate) {
this.mBirthDate = mBirthDate;
}

public String getSocialSecurityNumber() {
return mSocialSecurityNumber;
}

public void setSocialSecurityNumber(String mSocialSecurityNumber) {
this.mSocialSecurityNumber = mSocialSecurityNumber;
}
}

我的 JSON 输出既有原始字段名称(基于 getter 名称,例如 getSocialSecurityNumber()),也有我的 @JsonProperty 属性中指定的名称。

似乎如果我将 @JsonProperty 属性移至 getters,那么我就不会得到字段的加倍。有没有一种方法可以通过在字段上添加注释来做到这一点,我觉得这样更干净一点?

最佳答案

配置ObjectMapper仅考虑字段:

ObjectMapper mapper = new ObjectMapper();    
mapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE);
mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
<小时/>

在 Spring Boot 中,您可以使用 Jackson2ObjectMapperBuilder配置ObjectMapper :

@Bean
public Jackson2ObjectMapperBuilder objectMapperBuilder() {

return new Jackson2ObjectMapperBuilder() {

@Override
public void configure(ObjectMapper objectMapper) {
super.configure(objectMapper);
objectMapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE);
objectMapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
}
};
}

关于java - 类字段上的 @JsonProperty - 获取 JSON 中的重复字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41905651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com