У меня есть форматированный ввод JSON, например
{
"msisdn" : "<some value>",
"currentStackType" : "<some value>",
"msisdnDestination" : "<some value>",
"ncMigrationStatus" : "<some value>",
"spid" : "<some value>",
"ncMigrationTimestamp" : "2019-01-16 18:04:26"
}
в классе, в который я должен десериализовать, упомянутые поля данных JSON названы идентично соответствующим полям JSON. Также я использую @JsonProperty
аннотации, потому что без них «currentStackType», «msisdnDestination» и
"ncMigrationStatus" не распознается ObjectMapper.
После вызова ObjectMapper.readValue(json, <MyClassName>.class)
я замечаю, что десериализация прошла успешно.
Но после этого для целей регистрации я делаю обратное действие и наблюдаю следующее:
{
"migrationStatus": "<some value>",
"destination": "<some value>",
"migrationTimestamp": "<some value>",
"stackType": "<some value>",
"msisdn": "<some value>",
"currentStackType": "<some value>",
"msisdnDestination": "<some value>",
"ncMigrationStatus": "<some value>",
"ncMigrationTimestamp": "2019-01-16 06:04:26",
"spid": "<some value>"
}
Все поля, названные в нижнем регистре верблюдов, фактически дублируются с «сокращенными» именами.
Есть ли способ устранить это, кроме переименования свойств JSON?
Я пытался установить PropertyNamingStrategy
напрямую, но ничего не изменилось.
Мой класс выглядит как
public class ******* {
@JsonProperty("msisdn")
@NotBlank(message = "'MSISDN' should not be blank")
private String msisdn;
@JsonProperty("currentStackType")
@NotBlank(message = "'Current Stack Type' should not be blank")
private String currentStackType;
@JsonProperty("msisdnDestination")
@NotBlank(message = "'MSISDN Destination' should not be blank")
private String msisdnDestination;
@JsonProperty("ncMigrationStatus")
@NotBlank(message = "'NC Migration Status' should not be blank")
private String ncMigrationStatus;
@JsonProperty("ncMigrationTimestamp")
@NotNull(message = "'NC Migration Timestamp' should not be null")
private Date ncMigrationTimestamp;
@JsonProperty("spid")
@NotBlank(message = "'SPID' should not be blank")
private String spid;
public *******() {
}
public void setMSISDN(String val) {
msisdn = val;
}
public String getMSISDN() {
return msisdn;
}
public void setStackType(String val) {
currentStackType = val;
}
public String getStackType() {
return currentStackType;
}
public void setDestination(String val) {
msisdnDestination = val;
}
public String getDestination() {
return msisdnDestination;
}
public void setMigrationStatus(String val) {
ncMigrationStatus = val;
}
public String getMigrationStatus() {
return ncMigrationStatus;
}
public void setMigrationTimestamp(Date val) {
ncMigrationTimestamp = val;
}
public Date getMigrationTimestamp() {
return ncMigrationTimestamp;
}
public void setSPID(String val) {
spid = val;
}
public String getSPID() {
return spid;
}
}
Мне нужно скрыть некоторые детали, извините.