Как получить тело запроса в виде JSON точно так же, как отправлено в мой API? - PullRequest
0 голосов
/ 18 октября 2018

Я использую Spring Boot с Джексоном и работаю над регистрацией транзакций.Я пытаюсь захватить тело запроса, отправленное мне точно так, как оно было отправлено.Способ преобразования объекта в JSON приведен ниже:

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;

@Autowired
private Jackson2ObjectMapperBuilder objectMapperBuilder;
// I have a Bean for my Jackson config in the application setup class 
// and am using this class to ensure consistency between my logs and the output

public String objectToJson(){

     ObjectMapper mapper = objectMapperBuilder.build();
     return mapper.writeValueAsString(requestBody);
}

. Это работает большую часть времени.Это проблема только тех классов, где я использую JsonProperty, например:

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;

public class UserDTO {

     // Input Fields

     @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
     private String username;

     @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
     private String password;


      // Output Fields

      @ApiModelProperty(hidden = true)
      @JsonProperty(access = JsonProperty.Access.READ_ONLY)
      private LocalDateTime createdDate;

      @ApiModelProperty(hidden = true)
      @JsonProperty(access = JsonProperty.Access.READ_ONLY)
      private LocalDateTime updatedDate;
 }

Проблема в том, что он делает именно то, для чего настроен.Мне нужно преобразовать тело запроса объекта в формат JSON, используя указанные мной модификаторы записи, поскольку именно так оно и поступит в мой код.

В любом случае я могу инвертировать логику отображения для удовлетворения этого требования?

 // @RequestBody -> Mapper Convert (Using Write Rules) -> String JSON

Попытка уточнить

При использовании метода objectToJson выше для @RequestBody типа UserDTO как описано выше, я вижу вывод как:

 {
 "createdDate": "2018-11-06 00:00:00",
 "updatedDate": "2018-11-06 00:00:00"
 }

Когда я хочу, чтобы вывод включал весь объект, включая поля WRITE_ONLY, такие как:

 {
 "username": "myUserName9",
 "password": "securepassword123",
 "createdDate": "2018-11-06 00:00:00",
 "updatedDate": "2018-11-06 00:00:00"
 }

Возможно ли это?

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