Как преобразовать нулевой список в пустой список? - PullRequest
0 голосов
/ 08 апреля 2020

в моем приложении crud post api получает следующее тело

@Data
@AllArgsConstructor
@NoArgsConstructor
public class BodyRequest {

    private String description;
    private List<Request> ListRequest; 
}

, когда listRequest не передается в теле запроса, оно становится пустым, есть ли способ установить пустое значение для списка listRequest когда это ноль? Я хотел бы знать, есть ли возможность добавить аннотацию в список, которая позволяет такие изменения, как @ value или @ json

Я пытался добавить @JsonDeserialize (using = OptimizedListDeserializer.class) в список и определить класс OptimizedListDeserializer

@Data
@AllArgsConstructor
@NoArgsConstructor
public class BodyRequest {

    private String description;
    @JsonDeserialize (using = OptimizedListDeserializer.class)
    private List<Request> ListRequest; 
}

public class OptimizedListDeserializer extends StdDeserializer<List<Request> > {


    protected OptimizedListDeserializer(StdDeserializer<?> src) {
        super(src);
        // TODO Auto-generated constructor stub
    }

    @Override
    public List<Request>  deserialize(JsonParser jp, DeserializationContext ctxt)
            throws IOException {
           return new ArrayList<>();
    }
}

, но когда я пытаюсь вызвать службу, я получаю

"code": 415,
"error": "Content type 'application/json;charset=UTF-8' not supported"

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Самый простой способ сделать это - инициализировать список в классе следующим образом:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class BodyRequest {

    private String description;
    private List<Request> ListRequest = new ArrayList(); 
}
0 голосов
/ 15 апреля 2020

По состоянию на Джексон 2.9 вы получили это: @JsonSetter(nulls = Nulls.AS_EMPTY) public void setStrings(List<String> strings) { this.strings = strings; }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...