使用FastJSON注解处理实体属性
需求:对某一个返回前端字段处理特殊符号
- 手机端接收到的json字符串中存在的值有英文双引号解析不了(感觉应该是前端处理的),前端处理不了,现在后端返回字段时把英文双引号修改成中文双引号
- jackson 其实也可以调用自定义类,但是由于项目中返回值String 统一使用的是fastjson; 一开始并没有注意到,导致使用jackson 一直没有调用成功后面才发现是两个不对应的问题,所以一定要注意
//用户地址实体, 省略了其他的属性
public class UserInfoAddress {
/** 详细地址**/
//添加@JSONField 注解 注意引用的包为 com.alibaba.fastjson.annotation
//使用 serializeUsing 属性, 调用自定义类 SpecialCharacterSerializer
//@JsonSerialize(using = SpecialCharacterSerializer.class)
@JSONField(serializeUsing = SpecialCharacterSerializer.class)
private String address;
//自定义处理类 需要应用的包也是fastjson
public class SpecialCharacterSerializer implements ObjectSerializer {
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
//object 为对应的属性的值
String value = object.toString();
//接下来就可以对属性值进行处理了
value = ValidatorUtils.HandlingSpecialCharacter(value);
//处理结束之后重新写入
serializer.write(value);
}
}
https://vincent.blog.csdn.net/article/details/105447925