在发送到页面之前转换字段
Convert fields before sending to the page
我有一个用户 dto class,我需要在将其发送到前端之前转换它的一些属性。
UsedDto class
public class UserDto {
protected Integer userId;
protected String userName;
protected String password;
protected boolean enabled;
protected boolean active;
}
现在,从我的控制器
@Override
public ResponseEntity<UserDto> getUser(Integer userId) {
return new ResponseEntity<>(userService.findById(userId), HttpStatus.OK);
}
我得到这样的数据
{
"userId": 141,
"userName": "admin",
"password": "password",
"enabled": true,
"active": false
}
在我的例子中,在发送数据之前,我应该将布尔值(启用、活动)转换为字符串“Y”或“N”。
{
"userId": 141,
"userName": "admin",
"password": "password",
"enabled": "Y",
"active": "N"
}
我该怎么做?
您可以实现自定义序列化程序。看看这个例子。
public class UserDto {
protected Integer userId;
protected String userName;
protected String password;
@JsonSerialize(using = BooleanToStringSerializer.class)
protected boolean enabled;
@JsonSerialize(using = BooleanToStringSerializer.class)
protected boolean active;
}
public class BooleanToStringSerializer extends JsonSerializer<Boolean> {
@Override
public void serialize(Boolean tmpBool,
JsonGenerator jsonGenerator,
SerializerProvider serializerProvider)
throws IOException, JsonProcessingException {
jsonGenerator.writeObject(tmpBool ? "Y" : "N");
}
}
我有一个用户 dto class,我需要在将其发送到前端之前转换它的一些属性。
UsedDto class
public class UserDto {
protected Integer userId;
protected String userName;
protected String password;
protected boolean enabled;
protected boolean active;
}
现在,从我的控制器
@Override
public ResponseEntity<UserDto> getUser(Integer userId) {
return new ResponseEntity<>(userService.findById(userId), HttpStatus.OK);
}
我得到这样的数据
{
"userId": 141,
"userName": "admin",
"password": "password",
"enabled": true,
"active": false
}
在我的例子中,在发送数据之前,我应该将布尔值(启用、活动)转换为字符串“Y”或“N”。
{
"userId": 141,
"userName": "admin",
"password": "password",
"enabled": "Y",
"active": "N"
}
我该怎么做?
您可以实现自定义序列化程序。看看这个例子。
public class UserDto {
protected Integer userId;
protected String userName;
protected String password;
@JsonSerialize(using = BooleanToStringSerializer.class)
protected boolean enabled;
@JsonSerialize(using = BooleanToStringSerializer.class)
protected boolean active;
}
public class BooleanToStringSerializer extends JsonSerializer<Boolean> {
@Override
public void serialize(Boolean tmpBool,
JsonGenerator jsonGenerator,
SerializerProvider serializerProvider)
throws IOException, JsonProcessingException {
jsonGenerator.writeObject(tmpBool ? "Y" : "N");
}
}