Как установить параметры строки объекта ответа равными нулю?

#java #object #model #response

Вопрос:

Я хочу вернуть строковые параметры моего объекта ответа равными нулю, но у меня пустые строки. Как я могу установить параметры строки как нулевые в моем объекте ответа?

Спасибо.

Модель:

 public class UserDto {

    Long id;
    String firstname;
    String lastname;

    //getter,setters
}
 

Обслуживание:

 {
UserDto userDto = new UserDto();
userDto.setId(null);
userDto.setFirstname(null);
userDto.setLastname(null);
return userDto;
}
 

ответ:

 {
    "id": null,
    "firstName": "",
    "lastName": "",
}
 

Комментарии:

1. работает ли это, если вы по умолчанию все null указываете в объявлении класса и переопределяете его только при использовании установщиков?

2. Это может сработать. Вы имеете в виду, что мне нужно установить эти параметры как нулевые в модели?

3. Это то, что я имел в виду, но я не уверен. Это похоже на какую-то проблему с приведением между объектом и строкой.

4. Пожалуйста, не создавайте больше работы для других людей, вандализируя ваши посты. Публикуя в сети Stack Exchange, вы предоставляете не подлежащее отзыву право в соответствии с лицензией CC BY-SA 4.0 для Stack Exchange распространять этот контент (т. Е. Независимо от вашего будущего выбора). Согласно политике обмена стеками, распространяемой является невандализированная версия сообщения. Таким образом, любой вандализм будет пресечен. Если вы хотите узнать больше об удалении сообщения, пожалуйста, ознакомьтесь с разделом: Как работает удаление?

Ответ №1:

вам нужна проверка перед установкой данных в переменную, что-то вроде этого в методе setter

 public void setFirstName(String firstName){
  this.firstName = (firstName == null) ? "" : firstName;
}
 

или проверка в get mothod, как это

 public String getFirstName(){
  return (this.firstName == null) ? "" : this.firstName;
}
 

Ответ №2:

Если вы используете jackson, вы можете создать NullStringSerializer

 public class NullStringSerializer extends JsonSerializer<String> {

    @Override
    public void serialize(String value, JsonGenerator g, SerializerProvider provider) throws IOException, JsonProcessingException {
        g.writeNull();
    }
}
 

И добавьте его в свой ObjectMapper

 ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(String.class, new NullStringSerializer());
mapper.registerModule(module);