JsonInclude Как игнорировать значение по умолчанию, логическое, только когда не назначено - PullRequest
0 голосов
/ 27 декабря 2018

когда я использую Include.NON_NULL, ответ об ошибке неправильный, а если я использую Include.NON_DEFAULT, ответ со статусом 200 неправильный

Это то, что я ищу:

Статус: 200 OK

{
        "adultMovie": false,
        "backdropPathMovie": "/2U3hyiVzzhYzS6j9fcdVW4mO4Uk.jpg",
        "originalLanguageMovie": "en",
        "originalTitleMovie": "Fire"
} 

Статус: 400

{
    "errors": [
        {
            "typeId": "FIELD_VALIDATION_ERRORS",
            "field": "idMovie",
            "message": "Invalid value of `fff` provided"
        }
    ]
}

Это то, что я пробовал до сих пор: Моя модель:

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Movie implements Serializable {

    private static final long serialVersionUID = -3515253168981789136L;

    private boolean adultMovie;

    private String backdropPathMovie;

    private String originalLanguageMovie;

    private String originalTitleMovie;

    private Set<Error> errors;
}

Статус: 200 OK

{
    "adultMovie": false,
    "backdropPathMovie": "/2U3hyiVzzhYzS6j9fcdVW4mO4Uk.jpg",
    "originalLanguageMovie": "en",
    "originalTitleMovie": "Fire"
}

Статус: 400. Ошибка проверки

{
        "adultMovie": false, // It shouldn't show up
        "errors": [
            {
                "typeId": "FIELD_VALIDATION_ERRORS",
                "field": "idMovie",
                "message": "Invalid value of `513f` provided"
            }
        ]
}

Если я попытаюсь:

@JsonInclude(JsonInclude.Include.NON_DEFAULT)
public class Movie implements Serializable {

Статус: 200 OK

{
        "backdropPathMovie": "/2U3hyiVzzhYzS6j9fcdVW4mO4Uk.jpg",
        "originalLanguageMovie": "en",
        "originalTitleMovie": "Fire"
} // Here should show up "adultMovie": false, as this field is set as false. 

Статус: 400. Ошибка проверки

{
    "errors": [
        {
            "typeId": "FIELD_VALIDATION_ERRORS",
            "field": "idMovie",
            "message": "Invalid value of `fff` provided"
        }
    ]
}

1 Ответ

0 голосов
/ 27 декабря 2018

Ваш вопрос не ясен;субъект вопроса - это «предмет» вопроса, а не текст вопроса.

Источник вашей проблемы: Вы должны научиться считать.

Описание:
A boolean может содержать ровно два значения;правда и ложь.Исходя из моего воображения о том, что вы хотели спросить, кажется, что вы хотите что-то, что содержит три значения;true, false и not-set.

Используйте Boolean в качестве типа поля adultMovie.Boolean является ссылочным типом;поэтому он может иметь три значения;Boolean.TRUE, Boolean.FALSE и null.

В сочетании с аннотацией @JsonInclude(JsonInclude.Include.NON_NULL) нулевое значение для adultMovie приведет к JSON, который не содержит запись "adultMovie".

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