Я пытаюсь вставить пользователя из вызова API. В Bean есть обычные параметры, такие как имя, фамилия и т. Д. c.
В Bean есть одно поле, например Map<String, Set<String>> userExtraFieldMap;
Я вызываю свой API, используя Postman и всех пользователей детали автоматически устанавливаются в Bean при получении запроса, кроме userExtraFieldMap.
Код работает правильно для Content-Type: application/json
, но не работает для Content-Type: application/xml
userExtraFieldMap
параметр не является обязательным.
UserDetails. java
@XmlRootElement(name = "user")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = {"id", "name", "userExtraFieldMap""})
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonRootName("user")
@Schema(description="The UserDetails Response Model",name="UserDetailsModel")
public class UserDetails implements Serializable {
private static final long serialVersionUID = 1L;
@POJOMappingAnnotation (destinationFieldName = "userId")
private int id;
@POJOMappingAnnotation (ignoreSetValue = true)
private UserName name;
@XmlElement(name="userExtraFields")
@JsonProperty("userExtraFields")
private Map<String,Set<String>> userExtraFieldMap;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public UserName getName() {
return name;
}
public void setName(UserName name) {
this.name = name;
}
public Map<String, Set<String>> getUserExtraFieldMap() {
return userExtraFieldMap;
}
public void setUserExtraFieldMap(Map<String, Set<String>> userExtraFieldMap) {
this.userExtraFieldMap = userExtraFieldMap;
}
UserAPI. java
@POST
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Consumes({MediaType.APPLICATION_JSON,MediaType.TEXT_PLAIN, MediaType.APPLICATION_XML})
@JacksonFeatures(serializationEnable = SerializationFeature.WRAP_ROOT_VALUE)
public Response createUser(@Parameter(description="Version Of API",example="2") @PathParam("version") String version, UserDetails user) throws Exception {
...
}