我有一个 json,我必须将其转换为 java POJO。这是 json:
{
"foreclosurePreferences": [
{
"featureCode": "COV_BAS_ULIP",
"featureNumber": null,
"parentCoverageCode": null,
"preferences": {
"Minimum_Duration": 5
}
}
]
}
我使用了以下3个类,但它们未能正确反序列化,内部对象为
null
:
@Data
@NoArgsConstructor
public class Preferences implements Serializable {
@JsonProperty("Minimum_Duration")
private int minimumDuration;
}
@Data
@NoArgsConstructor
public class ForeclosurePreference implements Serializable {
private String featureCode;
private String featureNumber;
private String parentCoverageCode;
private Preferences preferences;
}
public class ForeclosurePreferencesWrapper implements Serializable {
private List<ForeclosurePreference> foreclosurePreferences;
public List<ForeclosurePreference> getForeclosurePreferences() {
return this.foreclosurePreferences;
}
public void setForeclosurePreferences(List<ForeclosurePreference> foreclosurePreferences) {
this.foreclosurePreferences = foreclosurePreferences;
}
}
我该怎么做?
试试这个:
更新 ForeclosurePreferencesWrapper 以使用
@ToString
lombok 来验证输出:
@ToString
public class ForeclosurePreferencesWrapper implements Serializable {
private List<ForeclosurePreference> foreclosurePreferences;
public List<ForeclosurePreference> getForeclosurePreferences() {
return this.foreclosurePreferences;
}
public void setForeclosurePreferences(List<ForeclosurePreference> foreclosurePreferences) {
this.foreclosurePreferences = foreclosurePreferences;
}
}
添加了测试类以查看输出:
public class Test {
public static void main(String[] args) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.writerWithDefaultPrettyPrinter();
ForeclosurePreferencesWrapper wrapper = objectMapper.readValue("{\n" +
" \"foreclosurePreferences\": [ \n" +
" { \n" +
" \"featureCode\": \"COV_BAS_ULIP\",\n" +
" \"featureNumber\": null,\n" +
" \"parentCoverageCode\": null,\n" +
" \"preferences\": {\n" +
" \"Minimum_Duration\": 5\n" +
" }\n" +
" }\n" +
"\n" +
" ]\n" +
"}", ForeclosurePreferencesWrapper.class);
System.out.println(wrapper);
}
}
注意: 您必须将 JSON 反序列化为
ForeclosurePreferencesWrapper
对象。
输出:
ForeclosurePreferencesWrapper(foreclosurePreferences=[ForeclosurePreference(featureCode=COV_BAS_ULIP, featureNumber=null, parentCoverageCode=null, preferences=Preferences(minimumDuration=5))])