终于搞定fastjson输出 List 问题了
@Document
public class OrderQSLine {
@Id
private String id;
@Indexed
private String style;
private String division;
private List<ObjectId> photos;
如果直接JSON.toJSONString输出,会吧ObjiecId所有属性都输出。所以,要加个过滤。
fastjson 过滤,输出photos(不过滤的话会输出所有objectId所有信息)
ValueFilter valueFilter = new ValueFilter() {
@Override
public Object process(Object o, String propertyName, Object propertyValue) {
if (propertyName.equals("photos") && (propertyValue instanceof List<?>)) {
@SuppressWarnings("unchecked")
List<ObjectId> vIds = (List<ObjectId>) propertyValue;
List<String> idStrings = new ArrayList<>();
for (ObjectId oId : vIds) {
idStrings.add(oId.toString());
}
return idStrings; // 返回修改后的属性值对象
}
return propertyValue;
}
};
//调用
JSON.toJSONString(map, valueFilter);