我有一个类似下面的课程。
let fiterServices = services.filter({$0.serviceName.lowercased().range(of: self.searchController.searchBar.text!.lowercased()) != nil})
我有一个像下面这样的MS4J服务,从这个对象返回一个JSON。
public class MyDto {
private int id;
private String name;
private String address;
// getters and setters .....
}
在运行时,我需要根据版本从java类中排除属性。即。如果版本> 1对象没有地址else对象带有地址属性。
为地址字段设置null不是一个选项。我尝试用JacksonView和JacksonFilter做到这一点但却无法适应这种情况。
要解决此问题的任何想法或示例代码?
答案 0 :(得分:1)
您可以使用正确的注释创建MyDto
的子类以忽略该属性:
public class OldVersionDto extends MyDto
{
@JsonIgnore
protected String address;
public OldVersionDto(int id, String name, String address) {
super(id, name, address);
}
}
它甚至可以是服务的内部类,如果它仅用于特定目的(只需确保它是静态的)。现在根据参数
实例化局部变量 MyDto dtoObject;
if (version < 1) {
dtoObject = new MyDto(1, "TestObjName", "TestObjAddress");
} else {
dtoObject = new OldVersionDto(1, "TestObjName", "TestObjAddress");
}
当然,address
属性必须在基类顺序中为protected
才能成功。