java中的拆分和验证比较表达式
我正在建立一个休息服务。我的服务资源方法如下所示:java中的拆分和验证比较表达式,java,json,rest,jax-rs,Java,Json,Rest,Jax Rs,我正在建立一个休息服务。我的服务资源方法如下所示: public Response<List<AuditEvent>> getAuditEvents(@QueryParam("filters") List<AuditRequest.Filter> filters, @QueryParam("orderBy") @DefaultValue("id") String
public Response<List<AuditEvent>> getAuditEvents(@QueryParam("filters") List<AuditRequest.Filter> filters,
@QueryParam("orderBy") @DefaultValue("id") String order,
@QueryParam("isDesc") @DefaultValue("true") boolean desc,
@QueryParam("startTime") long startTimestamp,
@QueryParam("endTime") long endTimestamp,
@QueryParam("limit") @DefaultValue("20") int size,
@QueryParam("offset") @DefaultValue("0") int startIndex)
我还制作了一个过滤器类:
public static class Filter {
private String propertyId;
private String op;
private Object value;
}
请建议我一种好的方法,将我在资源方法中得到的
List
转换为List
,并验证每个字符串表达式是否有效。基本上,我需要一个解析器来将这个字符串表达式转换为我的筛选器对象,其中的运算符可以是任何有效的运算符。我认为您的查询不够清晰
请考虑:
举几个例子:
- name==“杀死比尔”;年份=gt=2003
- name==“杀死比尔”和年份>2003
- 类型=在=(科幻,动作);(导演=克里斯托弗·诺兰,演员=贝尔);年份=通用电气=2000年
- 类型=科幻片、动作片和(导演='Christopher Nolan'或演员==*Bale)和年份>=2000
- director.lastName==Nolan;年份=通用电气=2000年;年份=lt=2010年
如果您想编写自己的解决方案,请考虑矩阵变量: 过滤器=名称=abc;年龄>40岁
希望它能起作用。我没说它错了。它不仅不清晰,而且倾斜太多(这里有太多的过滤器参数),明白你的意思了……但是如果我想把它作为queryparam中的一个列表,那么另一种方法是什么呢。因为如果我用这种方式,filters=name=abc;年龄>40岁;我必须用分隔符转换成列表。
public static class Filter {
private String propertyId;
private String op;
private Object value;