Java Integer null превращается в 0

При вызове службы REST для сохранения целого числа я заметил, что нулевое значение превращается в 0, и я не знаю, почему это происходит. Это мой класс

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CompanyPreference") public class CompanyPreference {
  public CompanyPreference() {
      super();
  }

  @XmlElement
  private Integer preferenceValueNumber;

  public void setPreferenceValueNumber(Integer preferenceValueNumber) {
      this.preferenceValueNumber = preferenceValueNumber;
  }

  public Integer getPreferenceValueNumber() {
      return preferenceValueNumber;
  }
}

а это мой веб-сервис

@POST
@SecureIt
@Consumes(value = { MediaType.APPLICATION_JSON })
@Produces(value = { MediaType.APPLICATION_JSON })
@Path("/{companyCode}/{companyType}/preferences/update")
@ApiOperation(value = "Update Company Preferences", response = DefaultResponse.class, authorizations = { @Authorization(value = "Bearer") })
public Response savePreferences(@ApiParam(value = "Company Code", required = true) @PathParam("companyCode") String companyCode,
                                @ApiParam(value = "Company Type", required = true) @PathParam("companyType") String companyType,
                                @ApiParam(value = "Array of Company Preference objects", required = true) CompanyPreference[] companyPreferences,
                                @Context ContainerRequestContext crc) throws ResponseError {

  for(int i = 0; i < companyPreferences.length; i++) {
     System.out.println(companyPreferences[i].getPreferenceValueNumber());
  }

}

Несмотря на то, что preferenceValueNumber является целым числом, а не примитивным целым числом, он все равно превращается в 0, когда мой запрос выглядит так ...

[
  { preferenceValueNumber: "" },  //this returns 0
  { preferenceValueNumber: 30 }   //this returns 30 as it should
]

Как сохранить исходное значение null?

Исходное значение не равно нулю, это пустая строка

baao 14.11.2018 11:46

Вы можете использовать обычный int и использовать другое значение в качестве специального флага. Допустимы ли отрицательные числа для этого параметра? Если нет, просто возьмите -1 ...

Giacomo Alzetta 14.11.2018 11:48

Я бы ожидал, что здесь будет сгенерировано исключение, а не нулевое значение ... Если ваш API ожидает целое число и находит String, он не должен преобразовывать его в null или 0, он должен ответить «400 Bad Request».

BackSlash 14.11.2018 11:49
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
304
0

Другие вопросы по теме