Как изменить имя свойства объекта при сериализации? - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть такой объект.

public class Profile {
  private String email;
  private String phone;

  @SerializedName("userCode")
  private String user_code;

  public String getEmail() {
      return email;
  }

  public String getPhone() {
      return phone;
  }

  public String getUser_code() {
      return user_code;
  }
}

Это то, что я получил, когда возвращал этот объект в Rest API

{
   "email": "abc@gmail.com",
   "phone": 12345678,
   "user_code": "742aeaefac"
}

Видимо, аннотация @SerializedName здесь не работалаЯ могу понять, что он получает имя объекта свойства на основе его имени получателя, а не в аннотации.Если я изменю имя получателя на getUserCode(), оно будет работать так, как я ожидал.

Я тоже пытаюсь использовать @JsonProperty, но тоже не помогло.

Может кто-нибудь объяснить, что здесь делается для решения этой проблемы?

Обновить код для сериализациипроцесс в контроллере.

@PostMapping(path = "/login", produces = "application/json")
@ResponseBody
public ClientRepresentation login(@RequestBody LoginRequest login) {
    Map<String, Object> resObj = new HashMap<String, Object>();
    ProfileResponse profileResponse = userService.findUserProfileByUserCode(login.getUserCode());

    //Code logic to process object data...

    resObj.put("profile", profileResponse);

    return ClientRepresentationBuilder.buildClientRep(HttpStatus.OK.value(), "Success", resObj);
}

ClientRepresentation класс

public class ClientRepresentation implements Serializable {
    private Integer code;
    private String message;
    private Object data;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...