我正在将Spring Boot与Jackson一起使用,并且正在进行事务记录。我试图捕获发送给我的请求正文与发送时的完全相同。我将对象转换为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;
}
问题在于它正在完全按照配置进行操作。我需要在使用我指定的Write修饰符的同时将Object Request Body转换为JSON格式,因为这就是它进入我的代码的方式。
无论如何,我是否可以反转映射逻辑来满足此要求?
// @RequestBody -> Mapper Convert (Using Write Rules) -> String JSON
试图澄清
如上所述,当在类型为 UserDTO 的@RequestBody上使用上面的 objectToJson 方法时,我看到的输出如下:
{
"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"
}
有可能吗?