Как установить карту в Rest API с jersey jar - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь вставить пользователя из вызова 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 {
     ...
    }
...