Я использую 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"
}
Возможно ли это?