項目中突然需要增加另一個字段的查找,而這個查找需要查另一張表的記錄。
但現在産品很多地方都要增加該字段,如何最快的實作該功能呢。
辦法如下:
通過fastjson序列化時,增加該字段的序列化類,該序列化類通過CODE查找名稱,并序列化到前端。
- VO的功能修改
@Data
public class SysDictItemSelectVo implements Serializable{
private static final long serialVersionUID = 1L;
@JSONField(serializeUsing=ToSystemNameSerializer.class)
private String systemName;
public String getSystemName(){
return this.getCode();
}
}
- 序列化的類的屬性
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;
import com.alibaba.fastjson.serializer.SerializeWriter;
import java.io.IOException;
import java.lang.reflect.Type;
public class ToSystemNameSerializer implements ObjectSerializer {
public static final ToSystemNameSerializer instance = new ToSystemNameSerializer();
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,
int features) throws IOException {
SerializeWriter out = serializer.out;
if (object == null) {
out.writeNull();
return;
}
//原來的值code
String strVal = object.toString();
System.out.println(strVal);
//通過code查找相關名稱,測試先寫死值
String name="std";
out.writeString(name);
}
}
經測試,序列化正常,其他地方隻需要在VO增加該注解即可.