解析为对象 api 字段,如电子邮件、bNumber、iKindCd 会导致空值
Parsing to Object api fields like eMail, bNumber, iKindCd causes null value
我尝试解析从 Api 到我的自定义对象的响应。
大多数字段都被正确解析,但名称如下的字段除外:eMail、iKindName、bNumber、uTypeName、iStartDT、iKindCd、uTypeCd(第一个小写字母,第二个大写字母)
在这样的字段中,如果我使用我的自定义对象 ResponseV2,我会得到空值。
如果我使用对象类型而不是 ResponseV2 - 字段 eMail、iKindName、bNumber、uTypeName、iStartDT、iKindCd、uTypeCd 不为空
我的 ReponseV2 中的字段(模式:第一个小写字母和第二个大写字母)有什么问题?我应该使用一些注释,比如这里的 @JsonProperty 吗?
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class ResultV2 implements Serializable {
private String country;
private String federationNumber;
private String city;
private String regon;
private String managerSurname;
private String countryCd;
private String pib;
private String institutionUuid;
private String lNumber;
private String siTypeName;
private String managerName;
private String ministryNumber;
private String eMail;
private String supervisingInstitutionID;
private String nip;
private String street;
private String www;
private String espAddress;
private String voivodeship;
private String id;
private String iKindName;
private String federationComposition;
private String lastRefresh;
private String postalCd;
private String bNumber;
private String panNumber;
private List<BranchesV2> branches;
private String krs;
private String supervisingInstitutionName;
private String iLiqStartDT;
private String eunNumber;
private String uTypeName;
private String institutionUid;
private String phone;
private String iStartDT;
private String iLiqDT;
private String name;
private String iKindCd;
private String siTypeCd;
private String yearPib;
private String uTypeCd;
private String dataSource;
private String voivodeshipCode;
private String status;
private String statusCode;
}
我有解决办法:如果我有
就可以了
@JsonProperty ("eMail") private String eMail;
而不是
private String eMail;
但是为什么呢?
Lombok @Data
注释正在生成 setter 方法作为
public void setEMail(final String eMail) {
this.eMail = eMail;
}
但是 json 映射器希望 setter 方法使用小写字母 e
,如下例所示,因此它无法找到该方法。
public void seteMail(final String eMail) {
this.eMail = eMail;
}
只需在这些字段上使用 @JsonProperty("eMail")
之类的 JsonProperty。它会很好用。
这里详细解释了为什么它会这样工作:
我尝试解析从 Api 到我的自定义对象的响应。
大多数字段都被正确解析,但名称如下的字段除外:eMail、iKindName、bNumber、uTypeName、iStartDT、iKindCd、uTypeCd(第一个小写字母,第二个大写字母)
在这样的字段中,如果我使用我的自定义对象 ResponseV2,我会得到空值。 如果我使用对象类型而不是 ResponseV2 - 字段 eMail、iKindName、bNumber、uTypeName、iStartDT、iKindCd、uTypeCd 不为空
我的 ReponseV2 中的字段(模式:第一个小写字母和第二个大写字母)有什么问题?我应该使用一些注释,比如这里的 @JsonProperty 吗?
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class ResultV2 implements Serializable {
private String country;
private String federationNumber;
private String city;
private String regon;
private String managerSurname;
private String countryCd;
private String pib;
private String institutionUuid;
private String lNumber;
private String siTypeName;
private String managerName;
private String ministryNumber;
private String eMail;
private String supervisingInstitutionID;
private String nip;
private String street;
private String www;
private String espAddress;
private String voivodeship;
private String id;
private String iKindName;
private String federationComposition;
private String lastRefresh;
private String postalCd;
private String bNumber;
private String panNumber;
private List<BranchesV2> branches;
private String krs;
private String supervisingInstitutionName;
private String iLiqStartDT;
private String eunNumber;
private String uTypeName;
private String institutionUid;
private String phone;
private String iStartDT;
private String iLiqDT;
private String name;
private String iKindCd;
private String siTypeCd;
private String yearPib;
private String uTypeCd;
private String dataSource;
private String voivodeshipCode;
private String status;
private String statusCode;
}
我有解决办法:如果我有
就可以了@JsonProperty ("eMail") private String eMail;
而不是
private String eMail;
但是为什么呢?
Lombok @Data
注释正在生成 setter 方法作为
public void setEMail(final String eMail) {
this.eMail = eMail;
}
但是 json 映射器希望 setter 方法使用小写字母 e
,如下例所示,因此它无法找到该方法。
public void seteMail(final String eMail) {
this.eMail = eMail;
}
只需在这些字段上使用 @JsonProperty("eMail")
之类的 JsonProperty。它会很好用。
这里详细解释了为什么它会这样工作: